2013-04-05 66 views
-1

我一直在嘗試打印一個新行,同時還在過去幾天中使用匯編語言在nasmide中打印字母表,並且無法獲取它,到目前爲止,我嘗試過的方法不是什麼都不打印,只是打印出A或打印了許多符號,Google對我沒有幫助,所以我決定在這裏發帖。用MS-DOS int 21h系統調用打印彙編語言的新行

到目前爲止我的代碼是

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

在你的程序集中使用註釋 – Rafael 2016-02-23 00:49:08

回答

2

嗯,首先:

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

是不會做你任何好處。您將0Dh加載到DL中,然後立即用0Ah覆蓋它,而沒有使用第一個值...您需要在兩個字符上撥打電話(int 21h)...

此外,您正在使用DL for換行符會覆蓋字符的先前使用情況...您需要根據需要保存並恢復該值。

5

代碼用於打印新行

MOV dl, 10 
MOV ah, 02h 
INT 21h 
MOV dl, 13 
MOV ah, 02h 
INT 21h 

ASCII ---> 10新線 ASCII ---> 13回車

即在組裝新的行代碼,代碼inspirated與寫作機器。 我們的教授告訴我們這個故事,但我不擅長英語。

乾杯:)

+5

isn'它先是13,然後是10? CR-LF? – xdevs23 2016-09-14 15:19:53

-2
mov dl, 0a 
int 21h 
int 0ah 

試試這個

+1

你應該解釋爲什麼以及如何解決這個問題。代碼片段本身並不是很有用。 – 2016-03-09 10:41:28

0

你可以只使用

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

,但其聲明爲你的 「主ENDP」 的底部,一個進程可以命名那功能換行並稱之爲你需要換行的地方