色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

8086133條指令有哪些?

錢良釵2年前14瀏覽0評論

?、 數據傳送指令:MOV、XCHG、LEA、LDS、LES、PUSH、POP、PUSHF、POPF、CBW、CWD、CWDE。

?、 算術指令:ADD、ADC、INC、SUB、SBB、DEC、CMP、MUL、DIV、DAA、DAS、AAA、AAS。

三、 邏輯指令:AND、OR、XOR、NOT、TEST、SHL、SAL、SHR、SAR、RCL、RCR、ROL、ROR。

四、 控制轉移指令:JMP、Jcc、JCXZ、LOOP、LOOPZ、LOOPNZ、LOOPNE、CALL、RET、INT。

五、 串操作指令:MOVS、LODS、STOS、CMPS、SCAS。

六、 標志處理指令:CLC、STC、CLD、STD。

8086指令包含133條基本指令, 一般分為五類來介紹

傳送指令,算術運算指令,邏輯運算和移位指令,串操作指令,控制轉移指令

一、數據傳送類指令

數據傳送是計算機中最基本、最重要的一種操作,傳送指令也是最常使用的一類指令

傳送指令把數據從一個位置傳送到另一個位置

除標志寄存器傳送指令外,均不影響標志位

重點掌握

MOV XCHG PUSH POP XLAT LEA

1、通用數據傳送指令

提供方便靈活的通用傳送操作

有3條指令

MOV

XCHG

PUSH POP

① 基本傳送指令MOV(move)

mov cl,4 ;cl←4,字節傳送

mov dx,0ffh ;dx←00ffh,字傳送

mov si,200h ;si←0200h,字傳送

mov bvar,0ah ;字節傳送

;假設bvar是一個字節變量,定義如下:bvar db 0

mov wvar,0bh ;字傳送

;假設wvar是一個字變量,定義如下:wvar dw 0

mov al,[bx] ;al←ds:[bx]

mov dx,[bp] ;dx←ss:[bp+0]

mov dx,[bp+4] ;dx←ss:[bp+4]

mov es,[si] ;es←ds:[si]

2,非法指令的主要現象:

兩個操作數的類型不一致

無法確定是字節量還是字量操作

兩個操作數都是存儲器

段寄存器的操作有一些限制

例子:

1、當無法通過任一個操作數確定是操作類型時,需要利用匯編語言的操作符顯式指明

MOV [BX+SI], 255 ;非法指令,修正:

;mov byte ptr [bx+si],255

;byte ptr 說明是字節操作

;mov word ptr [bx+si],255

;word ptr 說明是字操作

2,8088指令系統除串操作指令外,不允許兩個操作數都是存儲單元(存儲器操作數)

MOV buf2, buf1 如 MOV [BX],[SI]

3,MOV DS, ES ;非法指令,修正:

;mov ax,es

;mov ds,ax

MOV DS, 100H ;非法指令,修正:

;mov ax,100h

;mov ds,ax

MOV CS, [SI] ;非法指令

;指令存在,但不能執行

② 交換指令XCHG(exchange)

XCHG reg,reg/mem

;reg ? reg/mem

寄存器與寄存器之間對換數據

寄存器與存儲器之間對換數據

不能在存儲器與存儲器之間對換數據

例子:

mov ax,1199h ;ax=1199h

xchg ah,al ;ax=9911h

;等同于 xchg al,ah

mov wvar,5566h ;wvar是一個字量變量

xchg ax,wvar ;ax=5566h,wvar=9911h

;等同于 xchg wvar,ax

注意:不能在兩個內存單元之間交換

如:XCHG [BX],[SI] 錯誤!

段寄存器中CS、IP不能做操作數

③ 堆棧操作指令

1.堆棧是一個“后進先出LIFO”(或說“先進后出FILO”)的主存區域,位于堆棧段中;SS段寄存器記錄其段地址

堆棧只有一個出口,即當前棧頂;用堆棧指針寄存器SP指定

2,堆棧只有兩種基本操作:進棧和出棧,對應兩條指令PUSH和POP

堆棧由棧底向低地址方向生成

push:進棧指令先使堆棧指針SP減2,然后把一個字操作數存入堆棧頂部

如:push ax

push [2000h]

出棧指令POP:出棧指令把棧頂的一個字傳送至指定的目的操作數,然后堆棧指針SP加2

如:pop ax

pop wvar

3,堆棧操作的特點

堆棧操作的單位是字,進棧和出棧只對字進行

數據從棧頂壓入和彈出時,都是低地址送低字節,高地址送高字節

堆棧操作遵循先進后出原則,但可用存儲器尋址方式隨機存取堆棧中的數據

堆棧段是程序中不可或缺的一個內存區,常用來

臨時存放數據

傳遞參數

保存和恢復寄存器

2、累加器專用傳送指令

① 輸入輸出指令(IN/OUT指令)

格式:IN AL,port;port為直接端口地址

IN AL,DX ;DX的內容為端口地址(間接方式)

IN AX,port;

IN AX, DX

OUT port, AL

OUT DX, AL

OUT port, AX

OUT DX, AX

注意:①只能用累加寄存器不能用其它寄存器

②當端口地址在00H—FFH之間可以用直接地址

當端口地址大于FFH時必須用DX間址形式

例:IN AL,40H; (40H) AL

IN AX,80H; (80H)、(81H) AX

MOV DX, 0382H

IN AL,DX ; (0382H) AL

OUT 62H, AL

MOV DX, 0380H

OUT DX,AX

② 換碼指令XLAT(查表指令)

將BX指定的緩沖區中、AL指定的位移處的一個字節數據取出賦給AL

XLAT ;al←ds:[bx+al]

換碼指令執行前:

在主存建立一個字節量表格,內含要轉換成的目的代碼

表格首地址存放于BX,AL存放相對表格首地址的位移量

換碼指令執行后:

將AL寄存器的內容轉換為目標代碼

③址傳送指令 三條LEA 、LDS、LES

將存儲器操作數的有效地址送至指定的16位通用寄存器

LEA r16, mem

;r16←mem的有效地址EA

例子: 有效地址的獲取

LEA AX, [2375H] ; AX=2375H

LEA SP, [BX+SI] ; SP=(BX)+(SI)

區別: LEA SI, BUFF; SI=BUFF

MOV SI,BUFF; SI=(BUFF)

LDS r16, mem

;ds、r16←mem中的雙字,

執行后,會更新r16,ds的值。前面兩個字節送到r16,后面兩個字節送到ds

LES r16, mem

;es、r16←mem中的雙字,執行后,會更新r16,ds的值,效果與lds類似

3、標志傳送指令

① 讀標志指令

LAHF ;標志寄存器低字傳送到AH

② 設標志指令

SAHF ; AH的內容送標志寄存器低8位

③ 標志寄存器堆棧指令

PUSHF ;標志寄存器內容(16位)壓棧

④ 標志寄存器出棧指令

POPF ;彈出標志寄存器的內容。

二、 算術運算類指令

概述:算術運算類指令用來執行二進制的算術運算:加減乘除以及BCD碼調整。

這類指令會根據運算結果影響狀態標志,有時要利用某些標志才能得到正確的結果;使用他們時請留心有關狀態標志。

重點掌握

加法指令:ADD、ADC、INC

減法指令:SUB 、SBB、DEC、CMP、NEG

1、 加法和減法指令

加法指令:ADD, ADC和INC

減法指令:SUB, SBB, DEC, NE