8086汇编——课堂笔记整理2

查表指令 XLAT

MOV BX,OFFSET TABLE  ;table的有效地址(table的首地址,数组的首地址)存入BX

MOV AL,4;要查表的第5个

XLAT  ;隐含参数1.指定字节表的首地址存入BX

                        2.指定index存入AL

                        3.result存入AL

IN OUT

port : 32H,DX

数据:AX,AL

IN:external I/O device ->AL,AV,EAX

根据端口号的长度判断

IN AL,20H  ;20H是I/O port ID,port ID=8bit,将port ID 20H 设备中的数据->AL

IN AX,48H  ;48H 8bit,将port ID 48H 设备中的数据->AX

MOV DX,3FCH  ;3FCH是I/O port ID,port ID>8bit

IN AX,DX  ;再将data从(DX)端口输入到AX中

OUT:AL,AX,EAX->external I/O device

OUT 32H,AX  ;将AX中数据->32H port

MOV DX,400H  ;将port ID存入DX

MOV AL,86H  ;将数据存入AL

OUT DX,AL  ;将AL中的data输出到端口号=(DX)

MOVSX  MOVZX

MOVSX/MOVZX  reg16/32,reg/mem 8/16  ;MOVSX 有符号扩展  MOVZX 0扩展

if (CL)=0ABH;

MOVSX AX CL;(AX)=0FFABH

MOVZX AX CL;(AX)=00ABH

if (CL)=78H;

MOVSX AX CL;(AX)=0078H

MOVZX AX CL;(AX)=0078H

ADD

ADD DST,SRC 

CF  无符号数 借位进位  OF 有符号数溢出  ZF 结果为0  PF  AF  SF

reg,imm/reg/mem

mem,reg/imm

mem.mem

imm,....

  dst,src 等长

ADD ;半加

ADC DST,SRC ;全加  CF

INC DST  ;自加 无CF  地址自加,无进位,溢出循环

INC MEM/REG   ;只对地址,无IMM

e.g.1

c:

unsigned short b=7,c;

a=b++;

c=++b;

assembly:

a WORD ?

b WORD 7

c WORD ?

MOV AX,b

MOV a,AX ;不能 MOV a,b (MOV mem,mem)

INC WORD PTR b (PTR 强制类型转换)

INC WORD PTR b

MOV AX,b

MOV c,AX

e.g.2

32bit  DX  AX

 +      BX  CX

         DX   AX

ADD AX,CX  ;半加产生进位存入CF

ADC DX,BX  ;全加加上CF中产生的进位

e.g.3

INC AX

ADC AX,0  ;防止进位没加

e.g.4_1

LEA BX,ARRAY ;将ARRAY的有效地址存入BX

MOV AL,[BX]  ;寄存器间接寻址

.......

INC BX  ;地址自加,表示数组的下一个

e.g.4_2

MOV BX,0 ;数组的index=0

MOV AL,ARRAY[BX]  ;寄存器相对寻址

......

INC BX  ;数组的index++,数组的下一个

e.g.5

INC AX ;DX:AX中存的是32bit

ADC DX,0

错误 INC CF不变

改为

ADD AX,1

ADC DX,0

SUB  SBB

SUB dst,src ;无CF

dst=dst-src

e.g.

SUB AX,CX;减 被减数低8位,CF改变

SBB DX,BX;减 被减数高8位,减CF

DEC DST  ;自减,无CF

NEG DST;取补 DST=0-DST,改变CF

CMP DST,SRC ;DST-SRC,DST不改变

unsigned:ZF=0 DST=SRC

              CF=0 DST>=SRC

              CF=1 DST<SRC

signed:   ZF=0 DST=SRC

             OF=SF DST>=SRC  结果是正数  SF:数的正负 -=1,+=0

             OF<>SF DST<SRC  结果是负数  OF=overflow flag   SF=sign flag

原文地址:https://www.cnblogs.com/HackHer/p/5349293.html