1. 程式人生 > >第5~8章知識彙總

第5~8章知識彙總

第五章 [BX]和loop指令

[BX]:bx是一個間接定址單元,與[0]類似,它可以將一個記憶體單元的內容送入暫存器中,如mov ax,[bx],[bx]被看作偏移地址,預設的段地址為ds。暫存器如果用ax,則記憶體單元的長度為2,如果用al,則記憶體單元的長度為1。

loop:即迴圈,使用標號以及暫存器cx可以將程式進行迴圈操作,如

mov cx,3

s:add ax,1

loop s

即可認為s標記的指令被執行了3次

巢狀迴圈可以用push和pop來保持外層的cx不被內部的cx干擾,如

mov cx,3

s:push cx

add ax,3

mov cx,2

s1:sub ax,1

loop s1

pop cx

loop s

這就是巢狀迴圈,sub指令總共執行了6次

第六章、包含多個段的程式

db:每個資料佔一個位元組單位

dw:每個資料佔一個字單位即兩個位元組單位

我們使用不同的段,可以將資料和程式分開存放,讓程式更加整潔,並且解決了程式一個段所需空間不能超過64kb的問題.

同時要記住,一個段內的資料所佔的空間為 ((N+15)/16)×16,且(N+15)/16取大於等於它的最小整數,原理如下

在8086CPU架構上,段是以paragraph(16-byte)對齊的。程式預設以16位元組為邊界對齊,所以不足16位元組的部分資料也要填夠16位元組。“對齊”是alignment,這種填充叫做padding。16位元組成一小段,稱為節

 第七章 更靈活的定位記憶體地址的方法

兩個指令

and:邏輯與,同為1則為1

or:邏輯或,有1則為1

大小寫轉化,大寫小寫ASCII相差20h,即32,大寫轉小寫加上32,小寫轉大寫加上32

與bx功能相近暫存器:si,di

idata:表示常量

記憶體單元可以用[bx+idata]、[bx+si]、[bc+si+idata]等方式表示。

第八章 資料處理的兩個基本問題

與bx功能相近的暫存器:si、di、bp

div指令:除法運算

除數:有8位和16位兩種,在一個reg或記憶體單元中。

被除數:預設放在ax或dx和ax中,如果除數為8位,被除數則為16位,預設放在ax暫存器中;如果除數為16位,被除數則為32位,在dx和ax中存放,dx放高16位、ax放低16位