1. 程式人生 > >彙編第三章總結

彙編第三章總結

1.字資料在記憶體中的儲存

    存取原則:高 高 低 低 即:字資料的低位位元組存放在低位記憶體單元;高位存放在高位位元組存放在高地址記憶體單元;取低地址記憶體單位作為字資料地址。

2.資料在記憶體和cpu之間的傳送

    DS暫存器:資料段段暫存器,用於存放資料段的【段地址】

           將一段記憶體用作資料段,是程式設計時的一種安排;在mov add sub 等彙編指令中,訪問記憶體單元時,預設情況下指的是資料段。mov ax,【1】;ax<—((ds)*16+1)

3.彙編指令mov,add,sub

mov 指令形式:mov 暫存器,常數    mov ax,1000H  ;mov 暫存器,暫存器    mov bx,ax   ;mov  暫存器,記憶體單元   mov ax 【1】;mov 暫存器,段暫存器    mov ax,ds;mov 記憶體單元,常數     mov 【1】,byte ptr 3;mov   記憶體單元,暫存器 mov 【1】,ax; mov  記憶體單元 暫存器   mov 【1】,ds; mov 段暫存器,暫存器  mov ds,ax;mov 段暫存器,記憶體單元  mov ds,【1】

(1)兩個操作的長度一致(2)關於常數,不能作為第一個運算元,做第二個運算元時如果最高位是十六進位制的a~f或者A~F前面要加零(3)兩個記憶體單元之間不能直接傳送資料(4)不能使用mov指令修改CS和IP的值(5)關於段暫存器 兩個斷就成年期直接不能直接傳送;不能把常數送到段暫存器

add指令形式:add 暫存器,常數    add ax,1000H  ;add 暫存器 暫存器,add bx,ax;add  暫存器,記憶體單元,add ax,【1】;add 記憶體單元 常數 ,add 【1】,byte ptr 3;add 記憶體單元 暫存器,add 【1】,ax

(1)add指令的運算元不能同時是記憶體單元(2)add指令的運算元不能是段暫存器

sub指令:sub 暫存器,常數  sub ax,1000H;sub暫存器,暫存器 sub bx,ax;sub暫存器,記憶體單元 , sub ax,【1】;sub 記憶體單元,常數 , sub 【1】,byte ptr 3;sub 記憶體單元,暫存器  sub 【1】,ax

(1)兩個記憶體單元不能直接使用sub指令相減(2)sub指令的操作不能是段暫存器

4.棧

是一個邏輯上的概念,可以將一段記憶體空間當作棧來使用

特性:後進先出;兩個概念:棧底棧頂;兩個操作:出棧入棧;一個約定:8086中棧以字為存取單元

棧頂:最後入棧的字資料所對應的地址單元;棧底:固定的一端,棧區最高地址單元的前一個單元

入棧:把資料存入棧;出棧:把棧取出資料

 入棧操作分析:1126H存入棧區

         第一步:棧頂上移兩個單元,即棧頂-2—>棧頂;第二步存入資料

出棧操作分析:從棧中取出一個字資料給AX

          第一步:取出字資料5020H—>AX;第二步:棧頂下移兩個單元,即:棧頂+2—>棧頂

與棧相關的暫存器SS和SP

ss:棧段段暫存器,用於存放棧段的段地址

sp:棧指標暫存器,用於存放棧頂的偏移地址

ss:sp對應的實體地址是棧頂的實體地址   (ss)*16+(sp)—>棧頂的實體地址

棧操作指令:push和pop

指令形式:push ax   棧<—ax;pop ax   ax<—棧    push 【0】  棧<—ds:0對應的記憶體單元字資料 ;pop【0】    ds:0對應的記憶體單元<—棧;push ds   棧<—ds ;pop ds  ds<—棧

彙編指令:push 暫存器 將暫存器植入棧;pop 暫存器  用暫存器儲存出棧資料;push記憶體單元  將記憶體單元內容入棧;pop  記憶體單元  用記憶體單元儲存出棧資料;push 段暫存器  江段暫存器植入棧;pop 段暫存器  用段暫存器儲存出棧資料

在posh記憶體單元和pop記憶體單元中,指令中只需給出【偏移地址】預設地址在DS中。

對8086cpu而言,push和pop的操作:入棧和出棧均以字為單位;操作物件不能是常數;pop段暫存器中,段暫存器不能是cs和ss;

利用棧後入先出特性,使用push和pop指令可以完成一些特殊處理

pop ss;x

          ;ss<—(ss:sp)

          ;sp<—(sp)+2

棧頂超界;當棧慢的時候,在使用push指令入棧;當棧空的時候,在使用pop指令出棧;