微机实验
程序员文章站
2022-03-10 11:45:43
...
(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
上一篇: 双向链表
下一篇: 汇编语言: 数组删除指定元素