;用一号功能从键盘输入两个一位的十进制数,相乘的结果保存并显示 .model small .data x db ?,? infor db 'input:','$' .stack 100h .code start: mov ax,@data mov ds,ax mov dx,offset infor mov ah,9 ;显示提示信息"input:" int 21h mov ah,1 ;键盘输入 int 21h sub al,30h ;去掉ASCII码 mov bl,al mov dl,2ah ;显示乘号* mov ah,2 int 21h mov ah,1 ;输入第2个数 int 21h sub al,30h mov ah,0 mul bl ;相乘 aam ;十进制乘法调整,乘积的高位数在AH,低位数在AL中 mov x,al ;保存结果 mov x+1,ah add ax,3030h ;加上ASCII码 mov bx,ax mov ah,2 mov dl,3dh ;显示'=' int 21h mov dl,bh ;显示结果 int 21h mov dl,bl int 21h mov ah,4ch int 21h end start修改该程序使其输出结果为二进制数
时间: 2024-03-24 11:40:12 浏览: 97
好的,这里是修改后的程序,实现输入两个一位十进制数相乘并以二进制形式输出结果:
```
.model small
.data
x db ?,?
infor1 db 'input the first number: $'
infor2 db 'input the second number: $'
infor3 db 'the result in binary is: $'
newline db 0dh, 0ah, '$'
.stack 100h
.code
start:
mov ax, @data
mov ds, ax
; 输入第一个数
mov dx, offset infor1
mov ah, 9
int 21h
mov ah, 1
int 21h
sub al, 30h
mov bl, al
; 输入第二个数
mov dx, offset infor2
mov ah, 9
int 21h
mov ah, 1
int 21h
sub al, 30h
mov cl, al
; 计算结果
mov al, bl
mul cl
mov dl, ah ; 保存乘积的高位
mov ah, 0
mov bl, 2
loop1:
div bl
push dx ; 将余数入栈
cmp ax, 0
jnz loop1
; 显示结果
mov dx, offset infor3
mov ah, 9
int 21h
loop2:
pop dx ; 弹出余数
add dl, '0' ; 转换为ASCII码
mov ah, 2
int 21h
cmp sp, 0 ; 栈是否为空
jnz loop2
; 换行
mov dx, offset newline
mov ah, 9
int 21h
mov ah, 4ch
int 21h
end start
```
上述代码中使用了栈来保存每一位的余数,并在弹出时逐一输出,实现了将结果转换为二进制形式输出的功能。具体实现过程可以参考注释。
阅读全文