用完整的8086汇编语言程序格式实现以下过程。

BH与BL中各自存放着一个2位已组合十进制BCD数,求其乘积返回DX。

第1个回答  2014-11-28
mov AX,0

mov AL,BH
mov BH,0
mul AX,BX
DAA
mov DX,AX追问

注意放的是已组合BCD数,不是16进制数
返回DX也要变成BCD数
你会用循环做这个吗?

第2个回答  推荐于2016-02-12
START:

MOV BX, 1234H ;欲求:DX=12*34=0408H

;用 BH 控制循环,把 BL 内容累加
;----------------------------
MOV DX, 0
MOV CL, BH
AND CL, 0FH ;留下BH的个位
MOV CH, 0
LP1:
MOV AL, DL
ADD AL, BL
DAA
MOV DL, AL

MOV AL, DH
ADC AL, 0
DAA
MOV DH, AL
LOOP LP1
;----------------------------
MOV CL, 4
SHR BH, CL ;右移四位
MOV CL, BH ;留下BH的十位
MOV CH, 0

PUSH CX
MOV CL, 4
SHL BX, CL
AND BX, 0FF0H
POP CX
LP2:
MOV AL, DL
ADD AL, BL
DAA
MOV DL, AL

MOV AL, DH
ADC AL, BH
DAA
MOV DH, AL
LOOP LP2
;----------------------------
;执行到此处,即得出:DX=0408H。本回答被提问者采纳
相似回答