1. 程式人生 > >組合語言 實驗九

組合語言 實驗九

一: 補全程式t1.asm,完成在螢幕上輸出記憶體單元中的十進位制兩位數 

1 因為我們知道第一段的db中只含有一個數字12,所以其只佔即ds:[0]的位置,而我們需要的是將商儲存後面位元組的位置

2我們需要add dl 48是因為數字與數字符號之間的ASCII碼差值為48

之後我們再檢視其中的結果:

我們可以發現正如我麼所想要的結果。

二:補全程式t2.asm,完成在螢幕上輸出data段定義的5個十進位制兩位數,資料和資料之間以空格間隔

1 我們需要將db中的5個數字完成除法運算,所以可以運用到loop指令來進行使用。

2 前面的一些準備工作和問題一是一樣的,不同的就是多了一個改變地址的暫存器了,這個選擇哪個暫存器沒有太大影響,你可以使用si,di,bp,bx,idata之類的,只要不是定值就行,在每次迴圈時地址加上1,就可以逐次的完成除法。

3 在每次輸出的時候,要加上空格,所以我們可以在迴圈里加上一個輸出空格的程式碼段。

之後我們再來看看得到的結果:

三: 教材實驗9(P187) 

在螢幕的中間分別顯示綠色,綠底紅色,白底藍色的字串‘welcome to masm!’

1 首先我麼需要用loop指令來實現迴圈,有三次,在老師給的提示裡我們可以找到中間三行的位置段地址,至於列數我們可以自行進行相應的調整,我們用di來表示。

2 之後我們就可以把資料裡的單詞依次的放入地址記憶體中,每個單詞中間隔著的一個記憶體裡面放的數字則代表這串字元的屬性。

我們來檢視我們想要的結果:

實驗的收穫:

在這次的實驗中,自己學會了div用法以及更多的di,si,bp的用法,也瞭解了loop指令更多的用法,自己感到收穫了非常多的東西,希望在以後的學習中,自己可以瞭解的更加的多。