我一直在尝试打印一条新线,同时在过去的几天里使用汇编语言在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
答案 0 :(得分:7)
打印新行的代码
MOV dl, 10
MOV ah, 02h
INT 21h
MOV dl, 13
MOV ah, 02h
INT 21h
ascii ---> 10新线 ascii ---> 13回车
这是新行的汇编代码,代码是用写机启发的。 我们的教授告诉我们这个故事,但我不擅长英语。
干杯:)
答案 1 :(得分:2)
嗯,先关闭:
mov DL, 0DH
mov DL, 0AH
int 21H
不会对你有任何好处。你将0Dh加载到DL然后立即用0Ah覆盖它而没有使用第一个值...你需要在两个字符上进行调用(int 21h)......
此外,您使用DL作为换行符会覆盖该字符的先前使用...您需要根据需要保存并恢复该值。
答案 2 :(得分:1)
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
答案 3 :(得分:0)
你可以使用
mov ah, 02h
mov dl, 13
int 21h
mov dl, 10
int 21h
ret
但是在你的"主要的endp"的底部声明它为proc。您可以将该功能命名为换行符,并在需要换行符的地方调用它
答案 4 :(得分:0)
struct base1 { int b1, b2 = 42; };
struct base2 {
base2() {
b3 = 42;
}
int b3;
};
struct derived : base1, base2 {
int d;
};
derived d1{{1, 2}, {}, 4};
derived d2{{}, {}, 4};
答案 5 :(得分:-3)
mov dl, 0a
int 21h
int 0ah
试试这个