微机原理实验三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 BCD码相乘的实验
一、实验目的
掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算。
二、实验内容
实现BCD码的乘法,要求被乘数和乘数均以组合的BCD码形式存放,各占一个内存单元,乘积存放在另外两个内存单元中。
由于没有组合BCD码乘法指令,所以程序中采用将乘数1作为计数器,累加另一个乘数的方法得到计算结果。
三、程序框图
显示乘数1和乘数2
乘数1→计数器BL中
部分积DX清0
Y
BL=0?
N
进位位清0
显示结果
乘数2与部分积低位相加
结束
DAA调整
结果→DL
部分积高位进行进位位调整
DAA调整
结果→DH
计数器BL的值减1
DAS调整,并将结果送BL
四、程序清单
DISPL MACRO
ADD DL,30H
MOV AH,02
INT 21H
ENDM
CRLF MACRO
MOV DL,0DH
MOV AH,02
INT 21H
MOV DL,0AH
MOV AH,02
INT 21H
ENDM
DATA SEGMENT
DATA1 DB01001000B
DATA2 DB01110101B
RESULT DW?
DATA ENDS
STACK SEGMENT STACK
STA DB20 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV DI,OFFSET RESULT
MOV SI,OFFSET DATA1
MOV AH,[SI]
MOV CL,04
SHR AH,CL
MOV DL,AH
DISPL
MOV AL,[SI]
MOV BL,AL
AND AL,00001111B
MOV DL,AL
DISPL ;显示乘数一
CRLF
MOV SI,OFFSET DATA2
MOV AH,[SI]
MOV CL,04
SHR AH,CL
MOV DL,AH
DISPL
MOV AL,[SI]
AND AL,00001111B
MOV DL,AL
DISPL ;显示乘数2
CRLF
XOR DX,DX
S1: CMP BL,0
JZ S2
CLC
MOV AL,[SI]
ADC AL,DL
DAA
MOV DL,AL
MOV AL,00H
ADC AL,DH
DAA
MOV DH,AL
MOV AL,BL
DEC AL
DAS
MOV BL,AL
JMP S1
S2: MOV[RESULT],DX
MOV SI,DX
MOV CL,4
SHR DH,CL
MOV DL,DH
DISPL
MOV DX,SI
AND DH,00001111B
MOV DL,DH
DISPL
MOV DX,SI
MOV CL,4
SHR DL,CL
DISPL
MOV DX,SI
AND DL,00001111B
DISPL
CRLF
S3: MOV AX,4C00H
INT 21H
CODE ENDS
END START
五、实验要求
1.读懂源程序,写出程序注释。
2.修改程序使其不显示被乘数和乘数。
DISPL MACRO
ADD DL,30H
MOV AH,02
INT 21H
ENDM ;DL数值的ascll输出
CRLF MACRO
MOV DL,0DH
MOV AH,02
INT 21H
MOV DL,0AH
MOV AH,02
INT 21H
ENDM ;回车换行
DATA SEGMENT
DATA1 DB 01001000B
DATA2 DB 01110101B RESULT DW ?
DATA ENDS
STACK SEGMENT STACK
STA DB 20 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV DI,OFFSET RESULT
MOV SI,OFFSET DATA1
MOV BL,[SI]
MOV SI,OFFSET DATA2
XOR DX,DX
S1: CMP BL,0
JZ S2
CLC
MOV AL,[SI]
ADC AL,DL ;乘数2与部分积低位相加 DAA
MOV DL,AL;乘数2 DL
MOV AL,00H;部分积高位进行进位位调整 ADC AL,DH
DAA
MOV DH,AL
MOV AL,BL
DEC AL
DAS;DAS调整
MOV BL,AL;计数器BL的值减1
JMP S1
S2: MOV [RESULT],DX
MOV SI,DX
MOV CL,4
SHR DH,CL
MOV DL,DH
DISPL;JIEGUO GAO1
MOV DX,SI