汇编语言程序实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一:题目
编写求十进制数12678532与41412042(本人学号)之和的程序,并将和以十进制数的形式送屏幕显示。
二:要求
(1)两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。
(2)和以压缩十进制数的形式存入SUM以下单元。
(3)将和送到屏幕显示部分功能的实现采用子程序的形式。三:算法设计
1:程序
DATAS SEGMENT ;此处输入数据段代码
ADD1 DD 12678532H
ADD2 DD 41412042H
SUM DD ?
DATAS ENDS
STACKS SEGMENT STACK 'STACK';此处输入堆栈段代码
DW 100H DUP(?)
TOP LABEL WORD
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
;
LEA SP,TOP
LEA SI,ADD1
LEA DI,ADD2
MOV AL,[SI]
ADD AL,[DI]
DAA
MOV BYTE PTR SUM,AL
MOV AL,[SI+1]
ADC AL,[DI+1]
DAA
MOV BYTE PTR SUM+1,AL
MOV AL,[SI+2]
ADC AL,[DI+2]
DAA
MOV BYTE PTR SUM+2,AL
MOV AL,[SI+3]
ADC AL,[DI+3]
DAA
MOV BYTE PTR SUM+3,AL
MOV AX,WORD PTR SUM+2
CALL DISPAX
MOV AX,WORD PTR SUM
CALL DISPAX
;
MOV AH,4CH
INT 21H
DISPAL PROC NEAR
PUSH AX
PUSH CX
PUSH DX
PUSH AX
MOV CL,4
SHR AL,CL
CALL CHANG
MOV AH,02
MOV DL,AL
INT 21H
POP AX
AND AL,0FH
CALL CHANG
MOV AH,02
MOV DL,AL
INT 21H
POP DX
POP CX
POP AX
RET
DISPAL ENDP CHANG PROC NEAR CMP AL,10
JNGE CHANG1
ADD AL,7 CHANG1:ADD AL,30H RET
CHANG ENDP DISPAX PROC NEAR
XCHG AL,AH
CALL DISPAL
XCHG AH,AL
CALL DISPAL
RET DISPAX ENDP CODES ENDS
END START 2:流程图
3:运行结果
初始化
设置Add1.Add2
四:自我评价
通过这个题目使我对汇编语言的顺序,分支和循环结构有了更进一步的了解。同时,也掌握了加法指令以及SHR移位指令,以及子程序的编译和调用。
五:参考来源
《微机原理与接口技术》