匯編第七、八章知識點
第七章,第八章知識點
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章知識點總結,一會再做個思維導圖......
今天在圖書館學習的時候,對面是個好看的小姐姐,開心(我感覺我都快把隨筆寫成日記了)
匯編第七、八章知識點