微机原理实验三

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

相关文档
最新文档