我一直在尝试打印一个整数数组大约4个小时。 不幸的是,我甚至没有成功打印数组中的1个数字。 我有一个单一数字100%的代码。
我尝试在此代码中打印数组中的单个数字。 结果很奇怪:
32
结果假设为:
2
因为在A数组中只有数字2。
如果我更改这些行:
jge loopy
mov byte ptr[si], '-'
jmp loopy
为:
jge soff
mov byte ptr[si], '-'
它有效,打印数字2。循环出错了,即使循环没有做任何事情(因为只有1个数字)并且只返回soff
标签!
当然,我可以在互联网上找到一个代码,但我真的想知道我的代码出了什么问题。
.model small
.stack 100h
.data
A db 2
N equ 1
arrayCounter db 0
num dw ?
numS db 20 dup(' '),'$'
os dw ?
.code
mov ax, @data
mov ds, ax
mov di,offset A
mov os,offset numS
loopy:
cmp cx,N
je soff
inc cx
; move the next number to print, to num value
mov bl,arrayCounter
mov al,[di+bx]
cbw
inc arrayCounter
mov num,ax
mov ax, num
mov bx, 10
mov si, offset numS+19
next: cwd
idiv bx
cmp dx, 0
jge cont
neg dx
cont:
add dl, 48
mov [si], dl
dec si
cmp ax, 0
jz sof
jmp next
sof:
cmp num, 0
jge loopy
mov byte ptr[si], '-'
jmp loopy
soff:
mov ah, 9h
mov dx, offset numS
int 21h
.exit
end