当我尝试打印数字时出错
Error when I try to print number
我学汇编8086.
我有这个代码:
.model small
.stack 100h
.data
num db 10111111b
itr db 7 ;iterations
.code
mov ax, @data
mov ds, ax
mov cl,0 ;rolls counter
mov ch,0 ;zero counter
next:
rol num, 1
jnc isZero
inc cl
cmp cl, itr
je stop
jmp next
isZero:
inc ch
jmp next
stop:
mov cl,0
add cx, 48
mov ah, 9
mov dx, cx
int 21h
.exit
end
上面的代码计算 num 变量中的零数字,当检测到零时 ch
寄存器增加一。代码运行良好。
我尝试在屏幕上打印结果时遇到问题。
这一行:
int 21h
我收到这个错误:
INT 21h, AH=09h -
address: 07330
byte 24h not found after 2000 bytes.
; correct example of INT 21h/9h:
mov dx, offset msg
mov ah, 9
int 21h
ret
msg db "Hello$"
知道为什么会出现上述错误吗?以及如何修复它?
您已经将结果存储在CH
中,因为测试数据只是一个字节,所以零位的计数将在0到8之间变化。如果您使用另一个DOS输出函数,则显示起来很容易.
add ch, 48
mov dl, ch
mov ah, 02h
int 21h
或者定义 Result db " $"
并使用:
add ch, 48
mov Result, ch
mov ah, 09h
mov dx, offset Result
int 21h
我学汇编8086.
我有这个代码:
.model small
.stack 100h
.data
num db 10111111b
itr db 7 ;iterations
.code
mov ax, @data
mov ds, ax
mov cl,0 ;rolls counter
mov ch,0 ;zero counter
next:
rol num, 1
jnc isZero
inc cl
cmp cl, itr
je stop
jmp next
isZero:
inc ch
jmp next
stop:
mov cl,0
add cx, 48
mov ah, 9
mov dx, cx
int 21h
.exit
end
上面的代码计算 num 变量中的零数字,当检测到零时 ch
寄存器增加一。代码运行良好。
我尝试在屏幕上打印结果时遇到问题。
这一行:
int 21h
我收到这个错误:
INT 21h, AH=09h -
address: 07330
byte 24h not found after 2000 bytes.
; correct example of INT 21h/9h:
mov dx, offset msg
mov ah, 9
int 21h
ret
msg db "Hello$"
知道为什么会出现上述错误吗?以及如何修复它?
您已经将结果存储在CH
中,因为测试数据只是一个字节,所以零位的计数将在0到8之间变化。如果您使用另一个DOS输出函数,则显示起来很容易.
add ch, 48
mov dl, ch
mov ah, 02h
int 21h
或者定义 Result db " $"
并使用:
add ch, 48
mov Result, ch
mov ah, 09h
mov dx, offset Result
int 21h