4

在过去的几天里,我一直在尝试打印一个新行,同时还在 nasmide 中使用汇编语言打印字母,但无法得到它,到目前为止我尝试过的要么什么也没打印,只打印 A 或打印一个许多符号,谷歌对我没有帮助,所以我决定在这里发帖。

到目前为止我的代码是

CR equ 0DH
LF equ 0AH

main:
mov AH,02H
mov CX,26
mov DL, 'A'

while1:
cmp DL, 'A'
add DL, 01H
int 21H
mov DL, 0DH
mov DL, 0AH
int 21H
cmp DL, 'Z'
je Next
jmp while1

Next:
mov AH,4CH
int 21h
4

6 回答 6

15
于 2014-01-02T18:42:22.007 回答
3

嗯,首先:

mov DL, 0DH
mov DL, 0AH
int 21H

不会对你有任何好处。您将 0Dh 加载到 DL 中,然后立即用 0Ah 覆盖它,而无需使用第一个值...您需要在两个字符上进行调用(int 21h)...

此外,您使用 DL 换行会覆盖字符的先前使用...您需要根据需要保存和恢复该值。

于 2013-04-05T12:07:12.777 回答
3

100% 有效。

CR equ 0DH
LF equ 0AH

main: 
    mov DL, 'A'

while1:
    mov AH,02H      ;print character
    int 21H 

    mov BL, DL      ;store the value of DL before using DL for print new line

    mov DL, 10      ;printing new line
    mov AH, 02h
    int 21h
    mov DL, 13
    mov AH, 02h
    int 21h

    mov DL, BL      ;return the value to DL

    cmp DL, 'Z'
    je exit 
    add DL, 1       ;store in DL the next character
    jmp while1

exit:
    mov AH,4CH
    int 21h
于 2018-04-19T09:02:55.153 回答
0

你可以使用

 mov ah, 02h
 mov dl, 13
 int 21h
 mov dl, 10
 int 21h 
 ret

但是在“main endp”的底部将其声明为proc,您可以将该函数命名为换行符并在需要换行符的地方调用它

于 2016-05-14T04:55:34.990 回答
0
Mov Ah,02
Mov dl,42
Int 21
Mov dl,0a ---> next line 
Int 21
Mov dl,43
Int 21

Output: 
B
C
于 2018-12-08T01:01:43.587 回答
-3
mov dl, 0a
int 21h
int 0ah

尝试这个

于 2016-03-08T17:38:19.900 回答