8086彙編 資料傳送指令

2021-04-15 04:46:20 字數 1458 閱讀 2708

**於ibm pc組合語言程式設計  沈美明 溫冬嬋 編著

負責把 資料,位址或立即數傳送到暫存器或者儲存單元中.

1. 通用資料傳送指令

mov, push, pop, xchg

mov指令在cpu內或cpu和儲存器之間傳送位元組或字, 目的運算元不允許使用立即數, 也不能用cs暫存器, 不允許用mov指令在兩個儲存單元之間直接傳送資料,也不允許在兩個段暫存器之間直接傳送資訊.

mov指令不影響標誌位

mov ax, data_seg,

mov ds, ax   ;;段位址必須通過暫存器如ax送到ds暫存器

mov al, 'e'

mov bx, offset table

mov ax, y[bp][si]

push ax

(sp)=(sp) -2

((sp)+1, (sp)) = (ax)

pop ax

(ax) = ((sp) +1, (sp))

(sp) = (sp) + 2

xchg opr1, opr2

(opr1)   (opr2) 交換資料

2. 累加器專用傳送指令

in al, port

in ax, port

out port, al

out port, ax

如:in ax, 28h

mov data_word, ax

mov dx, 3fch

in ax, dx

xlat換碼指令

3. 位址傳送指令

lea 有效位址送暫存器

如: lea bx, [bx + si + 0f62h]

(bx) = 0400h, (si) =003ch

執行完指令後

(bx) = 0400 +003c +0f62  = 139eh

les 指標送暫存器和es指令

les di, [bx]

如:les di, [bx]

(ds)=b000h, (bx) =080ah, (0b080h) = 05aeh, (0b080ch) = 4000h

則執行完後

(di)=05eh ,  (es) = 4000h

lds 指標送暫存器和ds指令

如:lds si , [10h]

(ds)=c000h, (c0010h) =0180h, (c0012h) = 2000h

則執行完後

(si) = 0180h, (ds)=2000h

4. 標誌暫存器傳送指令

lahf   標誌送ah

sahf   ah送標誌暫存器

pushf  標誌進棧

(sp) = (sp) - 2

((sp) + 1, ( sp))  = (psw)

popf 標誌出棧

(psw) = ((sp) + 1 , (sp))

(sp) = (sp) + 2

8086彙編 rep 指令

rep指令常和串傳送指令搭配使用 功能 根據cx的值,重複執行後面的指令 功能 以位元組為單位傳送 1 es 16 di ds 16 si 2 如果df 0則 si si 1 di di 1 如果df 1則 si si 1 di di 1 功能 以字為單位傳送 1 es 16 di ds 16 si...

8086彙編 call 指令

字面意思 呼叫子程式 實質 流程轉移指令,它們都修改ip,或同時修改cs和ip call指令實現轉移的方法和 jmp 指令的原理相似 格式 call 標號 返回指令 ret retf cpu執行call指令,進行兩步操作 1 將當前的 ip 或 cs和ip 壓入棧中 2 轉移到標號處執行指令。cal...

8086彙編 Loop 指令

功能 實現迴圈 計數型迴圈 cpu 執行loop指令時要進行的操作 用cx和loop 指令相配合實現迴圈功能的三個要點 1 在cx中存放迴圈次數 2 用標號指定迴圈開始的位置 3 在標號和loop 指令的中間,寫上要迴圈執行的程式段 迴圈體 如果 cx 0,ip ip 8位位移 10op指令示例程式...