多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 8086匯編指令總結

8086匯編指令總結

來源:程序員人生   發布時間:2014-11-20 08:59:12 閱讀次數:3092次

經過學習,對8086匯編經常使用指令進行了以下總結:

(1).mov : 移動數據

例如:

mov ax, 8h ;mov 寄存器,常量 mov ax, bx ;mov 寄存器,寄存器 mov ax, ds:[0] ;mov 寄存器,內存單元 mov ds:[0], ax ;mov 內存單元,寄存器 mov ds, ax ;mov 段寄存器,寄存器 mov word ptr ds:[0], 8h ;mov (內存單元大小聲明) 內存單元, 常量 sk: mov ax, offset sk ;mov 寄存器,標號偏移地址 mov byte ptr ds:[0], offset sk ;mov 內存單元,標號偏移地址

易錯點:

mov ds:[0], ds:[1] ;mov 內存單元,內存單元(非法指令) mov ds, 8h ;mov 段寄存器,常量(非法指令) mov ds, es ;mov 段寄存器,段寄存器(非法指令) mov ds, offset sk ;mov 段寄存器,標號偏移地址(非法指令) mov [0], ax ;常量偏移地址不可省略默許ds,必須作段地址聲明(非法指令)


(2).add:增加數據值,用法同mov類似

(3).sub:減少數據值,用法同mov類似


(4).push:入棧,棧頂指針(sp)=(sp)+2,,并將1個字數據存入sp所指內存單元

例如:

push ax ;push 寄存器 push ds:[0] ;push 內存單元
易錯點:

push al ;push 寄存器(高/低)字節(非法指令),必須是1個字,16位數據 push 8h ;push 常量(非法指令)

(5).pop:出棧,讀取1個字sp所指的內存單元,并使棧頂指針(sp)=(sp)⑵

例如:

pop ax ;pop 寄存器 pop ds:[0] ;pop 內存單元

易錯點:

pop al ;pop 寄存器(高/低)字節(非法指令),必須是1個字,16位數據 pop 8h ;pop 常量(非法指令)

(6).inc:數據值+1, dec:數據值⑴

例如:

inc ax ;inc 寄存器 inc byte ptr ds:[0] ;inc (大小聲明)內存單元 dec ax ;dec 寄存器 dec byte ptr ds:[0] ;dec (大小聲明)內存單元

易錯點:

inc 8h ;inc 常量(非法指令) dec 8h ;dec 常量(非法指令)

(7).jmp:無條件轉移指令

例如:

s: jmp short s ;段內短轉移,jmp short 標號,IP修改范圍⑴28~127 jmp near ptr s ;段內近轉移,jmp near ptr 標號, IP修改范圍⑶2768~32767 ;以上兩條指令的實質為保存IP到標號的偏移距離,注意正確使用 jmp far ptr s ;段間轉移(遠轉移),jmp far ptr s, 修改CS:IP為標號的段地址:偏移地址 jmp ax ;段內轉移,jmp 16位reg, (IP)=(16位reg) jmp word ptr ds:[0] ;段內轉移,jmp word ptr 內存單元地址, ;(IP)=(內存單元地址處雙字節內存) jmp dword ptr ds:[0] ;段間轉移,jmp dword ptr 內存單元地址, ;(IP)=(內存單元地址處低16位內存數據),(CS)=(內存單元地址處高16位內存數據)

易錯點:

jmp 1000:0 ;想轉移到(cs:ip)=(1000:0)處(非法指令) jmp offset s ;想轉移到標號s處(非法指令)

(8).jcxz:有條件轉移指令,等價于
if((cx)==0) jmp short 標號;


(9).loop:循環指令,等價于

(cx)--; if((cx)!=0)jmp short 標號;

(10).and:2進制與運算,同mov,add,sub用法相似

(11).or:2進制或運算, 同mov,add,sub用法相似

例如:

and ds:[0], 1111h ;and 內存單元 and ax, 1111h ;and 16位寄存器 常量 and al, 11111110b ;and 8位寄存器 常量(第0位設為0) and ax, bx ;and 16位寄存器,16位寄存器 ;等等... or ds:[0], 1111h ;or 內存單元 or ax, 1111h ;or 16位寄存器 常量 or al, 00000001b ;or 8位寄存器 常量(第0位設為0) or ax, bx ;or 16位寄存器,16位寄存器 ;等等...

(12).mul:乘法指令

;(1)兩個相乘的數:兩個相乘的數,要末都是8位,要末都是16位。如果是8位, ;1個默許放在AL中,另外一個放在8位reg或內存字節單元中;如果是16位,1個默許在 ;AX中,另外一個放在16位reg或內存單元中。 ;(2)結果:如果是8位乘法,結果默許放在AX中;如果是16位乘法,結果高位默許在 ;DX中寄存,低位在AX中放。 ;計算100*10 mov al, 100 mov bl, 10 mul bl ;結果:(ax)=1000(03E8h) ;計算100*10000 mov ax, 100 mov bx, 10000 mul bx ;結果:(ax)=4240H, (dx)=000FH (F4240H=1000000)

(13).div:除法指令

;除數:有8位和16位兩種,在1個reg或內存單元中 ;被除數:默許放在AX或DX和AX中,如果除數為8位,被除數則為16位, ;默許在AX中寄存;如果除數為16位,被除數位32位,在DX和AX中寄存,DX存 ;放高16位,AX寄存低16位 ;結果:如果除數為8位,則AL存儲除非操作的商,AH存儲除非操作的余數; ;如果除數為16位,則AX存儲除法操作的商,DX存儲除法操作的余數 ;計算100001/100 mov dx, 1 mov ax, 86A1H ;(dx)*10000H+(ax)=100001 mov bx, 100 div bx ;結果:(ax)=03E8H(即1000),(dx)=1(余數為1) ;計算1001/100 mov ax, 1001 mov bl, 100 div bx ;結果:(al)=0AH(即10),(ah)=1(余數為1)

(14)call 標號:等價于

push IP jmp near ptr 標號

(15)ret : 等價于

pop IP
因此常如此配合使用:

call program1 program1: ;........ ret

(16)call far ptr 標號:等價于

push CS push IP jmp far ptr 標號

(17).retf:等價于

pop IP pop CS
因此常如此配合使用:

call far ptr program2 program2: ;........ retf

(18)call word ptr 內存地址:等價于

push IP jmp word ptr 內存地址 ;例如: mov sp, 10h mov ax, 0123h mov ds:[0], ax call word ptr ds:[0] ;結果:(IP)=0123H, (SP)=0EH

(19)call dword ptr 內存地址:等價于

push CS push IP jmp dword ptr 內存單元地址 ;例如: mov sp, 10h mov ax, 0123h mov ds:[0], ax mov word ptr ds:[2], 0 call dword ptr ds:[0] ;結果:(CS)=0,(IP)=0123H,(sp)=0CH

(20)shl:邏輯左移指令

;(1)將1個寄存器或內存單元中的數據向左移位; ;(2)將最后移出的1位寫入CF中 ;(3)最低位用0補充 ;例如: mov al, 01001000b shl al, 1 ;結果:(al)=10010000b, CF=0 ;若移動位數大于1,則必須將移動位數放在cl中 mov al, 01010001b mov cl, 3 shl al, cl ;結果:(al)=10001000b, 由于最后移除的1位是0,所以CF=0


(21)shr:邏輯右移指令

;(1)將1個寄存器或內存單元中的數據向右移位; ;(2)將最后移出的1位寫入CF中 ;(3)最高位用0補充 ;例如: mov al, 10000001b shr al, 1 ;結果:(al)=01000000b, CF=0 ;若移動位數大于1,則必須將移動位數放在cl中 mov al, 01010001b mov cl, 3 shr al, cl ;結果:(al)=00001010b, 由于最后移除的1位是0,所以CF=0

(22)int 常量:中斷例程


總結:

由上述可以看出8086匯編有以下語法規律:

(1)指令格式有3種情勢:

指令   目標   源

指令   目標

指令

(2)除int指令外,“目標”不能為常量

(3)當“目標”為段寄存器時,“ 源”只能為寄存器

(4)"目標“和"源"所占的內存字節大小應保證相同,

當雙方顯式知曉內存字節大小時,若不相同,則沒法通過編譯,

當唯一1方知曉內存字節大小時,數據處理則按該方內存字節大小計算,

當雙方都不知曉內存字節大小時,利用byte/word/dword ptr顯示聲明,其中dword ptr僅用于1些特殊指令。

(5)轉移指令有直接設置和位移偏移兩種,其中位移偏移有距離限制。





生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美日韩在线一区二区三区 | 性高湖久久久久久久久aaaaa | 亚洲一区成人 | 国产精品亚洲片在线观看麻豆 | 日本综合视频 | 国产成人免费a在线资源 | www.亚洲成人 | 国产精品自拍第一页 | 91欧美精品综合在线观看 | 亚洲精品一区二区三区在 | 国产另类图片 | 亚洲欧美国产另类视频 | 在线看黄色网址 | 日本免费在线一区 | 亚洲精品国产专区一区 | 国产精品亚洲欧美大片在线看 | 91福利一区二区三区 | 国产一区二区免费福利片 | 精品久久九九 | 日本日本 | 亚洲a在线视频 | 午夜国产理论 | 午夜啪啪免费视频 | a级片毛片| 亚洲欧洲日产国码在线观看 | 国产日韩一区在线精品欧美玲 | 九色视屏| 国产免费久久精品44 | 日韩一级视频免费观看 | 自拍欧美日韩 | 亚洲不卡在线视频 | 欧美成人777 | 成人午夜影视全部免费看 | 欧洲性大片xxxxx久久久 | 亚洲精品成人久久 | 日本xxx网站 | 欧美福利网站 | 国产全部视频 | 国产成人精品免费视频大全办公室 | 中文字幕视频在线 | 噜噜啪啪 |