微机实验

1)练习并掌握汇编语言开发全过程,在屏幕打印HELLO字符串。

程序段为:
            .486
  DATA     SEGMENT USE16                   ;定义数据段
  MESG    DB      '1511','$'               ;引号内为学号
  DATA    ENDS
  CODE    SEGMENT USE16                   ;定义代码段
      ASSUME  CS:CODE,DS:DATA
  BEG:	   MOV     AX,DATA
           MOV     DS,AX
LAST:      MOV     AH,9
           MOV  DX,OFFSET MESG
           INT     21H
	   MOV	   AH,4CH           
 	   INT	    21H                     ;返回DOS
  CODE   ENDS
          END   BEG


2 )排除语法错误:给出的是一个通过比较法完成 8 位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序,但有很多语法错误。要求实验者按照原样对源程序进行编辑,汇编后,根据 TASM 给出的信息对源程序进行修改,知道没有语法错误为止。然后进行链接,并执行相应可执行文件。正确的执行结果在屏幕上显示: 25+9=34
修改后代码:(分号后为修改)
;FILENAME: EXA131.ASM
    .486
DATA SEGMENT USE16
     SUM  DB ?,?,       ;SUM  DB ?,?
     MESG DB '25+9='
          DB 0,0           :DB 0,0,'$'
     N1   DB 9,F0H        : N1   DB 9,0F0H
     N2   DB 25
DATA ENDS

CODE SEGMENT USE16
     ASSUME  CS:CODE, DS:DATA
BEG:   MOV AX, DATA
       MOV DS,AX
       MOV BX,OFFSET SUM
       MOV AH,N1
       MOV AL,N2
       ADD AH,AL
       MOV [BX],AH
       CALL CHANG
       MOV AH,9
       MOV DX,OFFSET MESG
       INT 21H
       MOV AH,4CH
       INT 21H

CHANG  PROC
LAST:  CMP  [BX],10             ;LAST:  CMP BYTE PTR [BX],10
       JC  NEXT
       SUB  [BX],10              : SUB BYTE PTR [BX],10
       INC  [BX+7]              : INC BYTE PTR [BX+7]
       JMP LAST
NEXT:                      ;MOV CL,SUM
       ADD [BX+8],SUM     ;ADD [BX+8],CL
                            ; MOV DL,30H
       ADD [BX+7],30H       ;ADD [BX+7],DL
      ADD [BX+8],30H       ;ADD [BX+8],DL
       RET
CHANG  ENDP

CODE ENDS
     END BEG
运行代码:
;FILENAME: EXA131.ASM
    .486
DATA SEGMENT USE16
     SUM  DB ?,?
     MESG DB '25+9='
          DB 0,0,'$'
     N1   DB 9,0F0H
     N2   DB 25
DATA ENDS

CODE SEGMENT USE16
     ASSUME  CS:CODE, DS:DATA
BEG:   MOV AX, DATA
       MOV DS,AX
       MOV BX,OFFSET SUM
       MOV AH,N1
       MOV AL,N2
       ADD AH,AL
       MOV [BX],AH
       CALL CHANG
       MOV AH,9
       MOV DX,OFFSET MESG
       INT 21H
       MOV AH,4CH
       INT 21H

CHANG  PROC
LAST:  CMP BYTE PTR [BX],10
       JC  NEXT
       SUB BYTE PTR [BX],10
       INC BYTE PTR [BX+7]
       JMP LAST
NEXT:  MOV CL,SUM
       ADD [BX+8],CL
       MOV DL,30H
       ADD [BX+7],DL
       ADD [BX+8],DL
       RET
CHANG  ENDP

CODE ENDS
     END BEG






猜你喜欢

转载自blog.csdn.net/cheng__lu/article/details/78976622