我只是想问一个问题。
如何显示此类输出“ 0_1_2_3_4_5_6_7_8_9 ”
我需要在数字中使用循环,但是如何在每个循环中使下划线保持不变?
这是我的工作代码。
.model small
.stack 200h
.code
main proc
mov ah, 0
mov al, 12h ; Clear screen
int 10h
mov ah,3
mov bh,0 ; get cursor
int 10h
mov ah,2
mov bh,0 ;set cursor
mov dl,12
int 10h
mov cx, 9 ; counter
Mov ah, 2
Mov dl, 48 ; display 0
top:
int 21h
add dl, 47 ; display underscore
mov ah, 2
int 21h
push dx
add dl, -46 ; return to 1
mov ah, 2
int 21h
pop dx
loop top
mov ah, 4ch
mov al,00h
int 21h
endp
end main
我总是会这样做,请点击here
请帮帮我。
感谢。
答案 0 :(得分:3)
这是相对于当前数字,除了数字为'0'
时,它会给你不正确的结果:
add dl, 47 ; display underscore
mov ah, 2
int 21h
您还在错误的位置(相对于您更改其值的位置)推送和弹出dx
。
更好的方法是:
top:
int 21h ; print digit
push dx ; save dx
mov dl,'_'
mov ah, 2
int 21h ; print underscore
pop dx ; restore dx
inc dl ; next digit
loop top
答案 1 :(得分:1)
这个很好用:
; 0_9.asm
; assemble with "nasm -f bin -o 0_9.com 0_9.asm"
org 0x100 ; .com files always start 256 bytes into the segment
mov cx, 9 ; counter
mov dl, "0" ; 0
top:
push dx
push cx
mov ah, 2
int 21h
mov dl, "_" ; display underscore
mov ah, 2
int 21h
pop cx
pop dx
inc dl
loop top
mov dl, "9" ; display 9
mov ah, 2
int 21h
mov ah, 4ch ; "terminate program" sub-function
mov al,00h
int 21h