如何使用汇编语言中的循环指令在控制台中打印10到19



我可以使用循环打印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存在。相反,您需要将它们组合成一个字符串,该字符串对应于要打印的数字。

最新更新