1. 程式人生 > >匯編第七、八章知識點

匯編第七、八章知識點

靈活 思維 十六進制 除了 div 位置 姐姐 cpu 對象

第七章,第八章知識點

1. and命令:邏輯與指令,按位進行與運算

通過該指令可將操作對象的相應位設為0,其他位不變

(原來為1或0則與1相與後還是原數;原來為1或0則與0相與後肯定為0→實現特定位置0)

2. or命令:邏輯或命令,按位進行或運算

通過該指令可將操作對象的相應位設為1,其他位不變

(原來為1或0則與1相或後肯定為1;原來為1或0與0相或後為原數→實現特定位置1)

3.在匯編程序中,用‘……’的方式指明數據是以字符的形式給出的,編譯器將它們轉化為相應的ASCII碼

4.大小寫轉換的問題

方法一:利用ASCII碼值進行轉換

需要判斷是大寫字母還是小寫字母,利用現在所學的指令無法判斷(以後會學的)

方法二:根據大小寫字母二進制之間的規律,利用and或or指令進行改變大小寫字母

5.更為靈活的方式來指明內存單元[bx+idata],它的偏移地址為

(bx)+idata

幾種常用的形式:

(1)mov ax,[200+bx]

(2)mov ax,200[bx]

(3)mov ax,[bx].200

6. SI和DI是8086CPU中和BX功能相近的寄存器,SI和DI不能夠分成兩個8位寄存器來使用

7.除了用[bx]或[bx+idata]或[si]或[si+idata]或[di]或[di+idata]的方式,還可以用更靈活的方式[bx+si]和[bx+di]和[bx][si]和[bx][di]

8.更更靈活的方式[bx+si+idata]和[bx+di+idata]

幾個常用的形式:

mov ax,[bx+200+si]

mov ax,[200+bx+si]

mov ax,200[bx][si]

mov ax,[bx].200[si]

mov ax,[bx][si].200

9.嵌套循環時,外層循環應該保存起來

方法一:用一個寄存器

方法二:用一個內存單元

方法三:用棧(寄存器的數量有限,內存單元比較麻煩,所以更好的方法就是用棧)

做的小實驗

技術分享圖片

技術分享圖片

1. bx,si,di,bp都可以表示內存偏移地址

使用bx,si,di默認段地址在ds中

使用bp表示偏移地址時,默認段地址在ss中

2.mov [0],3不確定是字單元,字節單元還是雙字單元(與另一個操作數有關)→ptr屬性運算符 mov byte ptr[0],3(表示當作字節單元)

類似的有word ptr字單元,dword ptr 雙字單元

byte ptr既可用作常數,也可用作內存單元操作數

mov byte ptr [0],3=mov [0],byte ptr 3

3.偽指令 db,dw,dd

操作符 dup重復定義 e.g. db 8 dup(0)指定值為0

db 8 dup()未指定值

db 3 dup(1,2,3)=db 1,2,3,1,2,3,1,2,3

4.無符號除法指令div(2個規則)

技術分享圖片

5.Debug中默認為十六進制(這個我總忘)

6.無符號乘法指令mul (2個規則)

技術分享圖片

我先寫個7,8章知識點總結,一會再做個思維導圖......

今天在圖書館學習的時候,對面是個好看的小姐姐,開心(我感覺我都快把隨筆寫成日記了)

匯編第七、八章知識點