我可以使用循环打印0到9,但无法打印10到19。我该怎么做?
我用这个代码打印0到9:
.model small
.stack 100h
.code
main proc
mov cx, 10
mov dl, '0'
lbl1:
mov ah, 2
int 21h
inc dl
loop lbl1
main endp
end main
如果你只需要打印数字10到19,那么Jester的建议是在;1〃;性格很好。必须小心;1〃;字符将阻塞DL
寄存器中的循环变量。
mov cx, 10
mov dl, '0'
lbl1:
* push dx ; Preserve our loop variable
* mov dl, "1"
* mov ah, 02h ; DOS.PrintCharacter
* int 21h
* pop dx ; Restore our loop variable
mov ah, 02h ; DOS.PrintCharacter
int 21h
inc dl
loop lbl1
如果你把数字打印在上面,看起来会更好。我们在代码中添加了回车和换行对:
mov cx, 10
mov dl, '0'
lbl1:
push dx ; Preserve our loop variable
mov dl, "1"
mov ah, 02h ; DOS.PrintCharacter
int 21h
pop dx ; Restore our loop variable
mov ah, 02h ; DOS.PrintCharacter
int 21h
* push dx ; Preserve our loop variable
* mov dl, 13 ; Carriage return
* mov ah, 02h ; DOS.PrintCharacter
* int 21h
* mov dl, 10 ; Linefeed
* mov ah, 02h ; DOS.PrintCharacter
* int 21h
* pop dx ; Restore our loop variable
inc dl
loop lbl1
您需要实现一个完整的整数到字符串转换算法,例如:https://codereview.stackexchange.com/a/142910/178169
当前,您只需打印所有数字ASCII字符,其中只有0
-9
存在。相反,您需要将它们组合成一个字符串,该字符串对应于要打印的数字。