西电微机原理第二次上机实验报告
学号:姓名:
一、实验目的
1.熟练掌握汇编语言程序设计的方法及上机步骤。
2.掌握算术运算中,十进制数调整指令的应用。
3.掌握子程序的设计方法。
4.掌握DOS功能的调用方法。
二、实验仪器
586微机 1台
三、实验内容
编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。
编程要求与提示:
[1] 两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。
[2] 和以压缩十进制数的形式存入SUM以下单元。
[3] 将和送到屏幕显示部分功能的实现采用子程序的形式。
[4] 实验步骤如下:
a. 用全屏幕编辑软件建立源程序。
b.用masm.exe汇编程序对源程序进行汇编,形成目标程序。
c. 用link.exe连接程序对目标程序进行连接形成可执行文件。
d. 用DEBUG对连接通过的可执行程序进行调试。
四、实验内容对应的源程序及流程
源程序如下:
STACK SEGMENT STACK
DB 10H DUP(00)
STACK ENDS
DATA SEGMENT
ADD1 DB 12H,67H,85H,32H
ADD2 DB 21H,73H,65H,43H
SUM DB 4H DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
MOV AX, DATA
MOV DS, AX
MOV AX, DATA
MOV ES, AX
MOV AX,STACK
MOV SS,AX
LEA SI, ADD1[3]
LEA BX, ADD2[3]
LEA DI,SUM[3]
MOV CX,4
CLC
L1:
MOV AL,[SI]
ADC AL,[BX]
DAA
MOV [DI],AL
DEC SI
DEC BX
DEC DI
LOOP L1
CALL DISPAL
; ------------EXITPROC:
MOV AH,4CH ;结束程序
MOV AH,1
INT 21H
; ------------DISPAL PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
LEA DI,SUM
MOV CX,4
DISPAL2:
MOV AL,[DI]
SHR AL,1
SHR AL,1
SHR AL,1
SHR AL,1
MOV AH,2
MOV DL,AL
ADD DL,30H
INT 21H
MOV AL,[DI]
AND AL,0FH
MOV AH,2
MOV DL,AL
ADD DL,30H
INT 21H
INC DI
LOOP DISPAL2
POP DI
POP DX
POP CX
POP BX
POP AX
RET
DISPAL ENDP
CODE ENDS
END START
运行结果如下:
五、问题讨论
1.在以十进制数形式参加运算的程序设计中,应注意那些问题。
答:应注意进位和溢出。
2.总结循环程序设计的步骤及方法。
答:分析题目,画流程图,标出循环条件,写程序,检测循环能否进行。