2014-12-13 25 views
-2

我試圖創建在裝配8086顯示此程序:想要回答這個8086彙編代碼和值嗎?

First Name: Nada 
last Name: masoud 

我需要知道如何添加新行的名字:·馬蘇德

org 100h 

mov ax,0b800h 
mov ds,ax 

linefeed db 13, 10, "$" 

mov [02h], 'F' 
mov [04h], 'i' 
mov [06h], 'r' 
mov [08h], 's' 
mov [0ah], 't' 
mov [0ch], ' ' 
mov [010h], 'N' 
mov [012h], 'a' 
mov [014h], 'm' 
mov [016h], 'e' 
mov [018h], ':' 
mov [01ah], 'N' 
mov [01ch], 'a' 
mov [01eh], 'd' 
mov [020h], 'a' 

mov ah, 09 
mov dx, offset linefeed 
int 21h 

mov ax,0b800h 
mov ds,ax 
mov [0a2h], ' ' 
mov [04h], 'a' 
ret 
+0

我們的教授需要我們使用這種類型的書寫代碼來顯示名字和姓氏和id作爲每行的字母,所以我開始第一行,不知道如何添加新行 – 2014-12-13 14:23:29

+0

添加160(0A0h)。忘記int 21h/9和換行 - 他們不會很好地一起打球。無需重置'ds'。看起來你在正確的地方有空間,但回到了'a'的第一行。 – 2014-12-13 15:05:52

+0

所以它開始新行,但我需要做的每個行寫我每個字母,我不知道如何重新開始mov [0a0h],'' mov [0a2h],'l' – 2014-12-13 15:16:38

回答

0

一個。您需要完全刪除此行,因爲它不包含可執行代碼,因此會導致程序崩潰!

linefeed db 13, 10, "$" 

b。你有沒有注意到你跳過了一個地址?

mov [0ch], ' ' 
mov [010h], 'N' 

c。要求DOS執行換行是因爲您直接在視頻內存中寫入而無用。所以放寬這些線。而且它還是會失敗,因爲DS並沒有指向程序本身!

mov ah, 09 
mov dx, offset linefeed 
int 21h 

d。只要繼續這個序列...

mov [0A2h], 'l' 
mov [0A4h], 'a' 
mov [0A6h], 's' 
mov ..........