彙編學習(4)彙編指令舉例

2022-01-31 06:34:26 字數 2081 閱讀 5473

☞位元組:記為byte,乙個位元組由8個bit組成,可以存在8位暫存器中。

字:word,乙個字由兩個位元組組成。

注:乙個字可以存在乙個16位暫存器中,這個字的高位位元組和低位位元組自然就存在這個暫存器的高8位暫存器和低8位暫存器中。

十六進製制中的一位相當於二進位制數中的四位。

☞幾條彙編指令

彙編指令      操作                        高階語言描述

mov ax,18 將18送入暫存器ax     ax=18

mov ah,78 將78送入暫存器ah ah=78

add ax,8 將暫存器ax中的數值加8 ax=ax+8

mov ax,bx 將暫存器bx中的資料送入ax ax=bx

add ax,bx 將ax和bx中的數值相加送入ax ax=ax+bx

☞程式段中指令的執**況一

程式段中的指令        指令執行後ax中的資料        指令執行後bx中的資料

mov ax,4e20h 4e20h 0000h

add ax,1406h 6226h 0000h

mov bx,2000h 6226h 2000h

add ax,bx 8226h 2000h

mov bx,ax 8226h 8226h

add ax,bx ? 8226h

分析:程式段中的最後一條指令add ax,bx,在執行前ax和bx中的資料都是8226h,相加後所得值為1044ch,

但是ax為16位暫存器,只能儲存4位十六進製制的資料,所以最高位1不能在ax中儲存,ax中的資料為044ch。

☞程式段中指令的執**況二

程式段中的指令        指令執行後ax中的資料        指令執行後bx中的資料

mov ax,001ah 001ah 0000h

mov bx,0026h 001ah 0026h

add al,bl 0040h 0026h

add ah,bl 2640h 0026h

add bh,al 2640h 4026h

mov ah,0 0040h 4026h

add al,85h 00c5h 4026h

add al,93h ? 4026h

分析:程式段中的最後一條指令add al,93h,在執行前,al中的資料為c5h,相加後所得值為

158h,但是al為8位暫存器,只能存放兩位十六進製制資料,所以最高位的1丟失,ax中的資料位0058h。

注:此時al是作為乙個獨立的8位暫存器來使用的,和ah沒有關係,cpu在執行這條指令時認為ah和al是兩個不相關的暫存器。

如果執行add ax,93h 則低8位的進製會儲存到ah中。

☞在進行資料傳送或運算時,要注意指令的兩位操作物件的位數應當是一致的,

例如:

mov ax,bx

mov bx,cx

mov ax,18h

mov al,18h

add ax,bx

add ax,2000

是正確的指令

mov ax,bl

mov bh,ax

mov al,2000

add al,100h

等是錯誤的指令

筆記的過程,就是思考的過程。放慢了閱讀速度,加長了思考消化時間。

彙編指令特別舉例

push 入棧 pop 出棧 mov 資料傳送指令 mov ebx,0 將0傳入ebx中 emit 資料插入 emit 0fh 不屬於彙編 test 屬於邏輯運算指令 test的乙個非常普遍的用法是用來測試一方暫存器是否為空 test ecx,ecx jz somewhere如果ecx為零,設定zf...

學習 彙編指令

nop指令 空指令,什麼都不操作,唯一變化的就是eip當前指向的位址 需要講的就是位元組的問題 首先我們看到 00401002 e8 ff040000 call getmodulehandlea 這個位址中的資料e8 ff040000有5個位元組,那麼我們現在進行修改為將call的位址的彙編指令修改...

彙編 彙編指令大全

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...