汇编语言程序实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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移位指令,以及子程序的编译和调用。

五:参考来源

《微机原理与接口技术》

相关文档
最新文档