这题如何做??用汇编写 8086

来源:百度知道 编辑:UC知道 时间:2024/06/03 01:58:53
编程把一个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数.转换算法可以是:用二进制数除以10000,商位"万位",再用余数除以1000,得到"千位";依次用余数除以100,10和1,得到"百位","十位","个位".

都有算法了,还不好做吗?
下面的程序是调试通过的,汇编连接生成.exe文件后,用debug运行看结果。
dseg segment
num dw 1234H
rlt db 5 dup(0)
fac dw 10000,1000,100,10,1
dseg ends
cseg segment
assume cs:cseg,ds:dseg
begin: mov ax,dseg
mov ds,ax
mov ax,num
xor dx,dx
lea si,rlt
lea di,fac
mov cx,5
next: mov bx,[di]
div bx
mov [si],al
inc si
mov ax,dx
xor dx,dx
inc di
inc di
loop next
mov ah,4ch
int 21h
cseg ends
end begin

再给你改成有输出结果的,这个程序汇编连接生成.exe文件后,直接运行即可看到结果(不过不足5位的最左边补零了)。
dseg segment
num dw 1234H
rlt db 5 dup(0),'$'
fac dw 10000,1000,100,10,1
dseg ends