8086汇编语言2位整数打印

问题描述 投票:0回答:1

为什么42没有打印出来? 输出是0M而不是42

测试2过程

mov arrCount[0], 42

mov al, arrCount[0]
mov bx, 10
xor dx, dx
div bx

mov bl, al
mov bh, ah

mov ah, 02h
add bh, '0'
mov dl, bh
int 21h

mov ah, 02h
add bl, '0'
mov dl, bl
int 21h

ret

测试2结束

主要过程远

mov ax, @data
mov ds, ax

; 调用测试1 致电测试2

mov ax, 4c00h
    int 21h

MAIN    ENDP

结束主

assembly x86-16 tasm
1个回答
0
投票

您看到“0M”而不是“42”的原因是您没有正确处理除法来分隔十位和个位。这是一个简单的修复:

  • 除以 10 后,AL 保存商(即十位) 位),AH 保存余数(个位)。

  • 更正您正在打印的内容:

    您应该先打印十位数字(AL),然后打印个位数字 (啊)。 您在两者中都添加了“0”,但您使用了错误的 注册数字。

解决方法如下:

  • 将余数(个位)和商(十位)存储在一个寄存器中 在另一个。

  • 两者都添加“0”并按顺序打印。

这将确保正确打印 42 而不是“0M”。

© www.soinside.com 2019 - 2024. All rights reserved.