“PTR”操作符 :强制类型转换 MOV BYTE PTR [BX], 20H ;1B立即数20H送DS:[BX] MOV WORD PTR [BX], 20H ;立即数20H送DS:[BX], ;00H送DS:[BX+1] 2.LEA(Load Effective Address)
设:变量X的偏移地址为1020H , (BP)=0020H 执行指令后:
LEA DX, X LEA BX, [BP]
; 执行后, (DX) = 1020H ; 执行后, (BX) = 0020H 3.地址传送指令LDS,LES LDS REG16, MEM ; 从存储器取出4B,送入REG16和DS LES REG16, MEM ; 从存储器取出4B,送入REG16和ES 4. 符号扩展指令CBW,CWD CBW ;将AL寄存器内容符号位扩展到AH CWD ;将AX寄存器内容符号位扩展到DX 设:(AX)= 8060H,(DX)=1234H 执行下列指令后 CBW ;(AX)= 0060H 设:(AX)= 8060H,(DX)=1234H 执行下列指令后 CWD ;(DX)= 0FFFFH,(AX)= 8060H 5.交换指令XCHG 例如,(AX)= 5678H 执行下面指令后 XCHG AH, AL
;(AX)= 7856H 6.换码指令XLAT
XLAT ;AL←DS: [BX+AL]
表格的首地址事先存放在内存逻辑地址DS: BX中, AL的内容是相对于表格的位移量,
把对应内存的内容取出放在AL寄存器。 7. 逻辑运算符 SHR(右移) SHL(左移) AND(与) OR(或) XOR(异或)
NOT(取反
8.关系运算符
关系运算符用于两个数的比较,结果为“真(-1)”或“假(0)” GT(>) GE(>=) LT(<) LE(<=) EQ(=) NE(≠) 9.地址运算符
SEG 名称 取地址表达式所在段的段基址 OFFSET 名称 取地址表达式的偏移地址 10.类型操作符 TYPE:
取每个变量的字节数 LENGTH:
取变量定义了多少个 SIZE:
取变量占用的字节总数 11.加法指令
(1)ADD(Addition):加法指令 格式:ADD dest,src 功能:dest ←dest + src dest(目的操作数):8/16位的寄存器/存储器操作数 src(源操作数):与目的操作数同类型的寄存器/存储器/立即数 例: ADD AX, SI ; AX←(AX)+(SI),16位运算 ADD X, 3 ; X←(X)+3, 运算位数由X的类型确定 ADD [BX], DX ; DS:[BX]←DS:[BX]+DX, 16位运算 说明:
? 状态标志CF, OF, ZF, SF, PF, AF按照运算结果被刷新; (2)ADC(Addition with Carry):带进位的加法指令 格式:ADC dest,src 功能:dest←dest+src+CF dest(目的操作数):8/16位的寄存器/存储器 src(源操作数):与目的操作数同类型的寄存器/存储器/立即数 说明:
? 状态标志CF, OF, ZF, SF, PF, AF按照运算结果被刷新; ? 主要用于对数据分段相加时高位的加法运算。 (3)INC(Increment):加一指令 格式:INC dest 功能:dest←dest+1 dest(目的操作数):8/16位的寄存器/存储器 例: INC X
;X←(X)+1,运算位数由X的类型确定 INC WORD PTR [BX]
;DS:[ BX] ←DS:[ BX]+1,16位运算 说明:
? 会影响标志OF, ZF, SF, PF, AF,但是CF标志不受影响; ? 增量指令常常用来修改计数器和存储器指针的值。 12.减法指令
(1)SUB(Subtract):减法指令 格式:SUB dest,src 功能:dest ← dest-src
dest(目的操作数):8/16位的寄存器/存储器
src(源操作数):与目的操作数同类型的寄存器/存储器/立即数 例:
SUB Y, 20H ;Y←(Y)-20H,运算位数由Y的类型确定 SUB WORD PTR [BP], 5 ;SS:[ BP] ←SS:[ BP]-5,16位运算 说明:会影响CF, OF, ZF, SF, PF, AF 标志位。 (2)SBB(Subtract with Borrow):带借位的减法指令 格式:SBB dest,src 功能:dest←dest-src-CF
dest(目的操作数):8/16位的寄存器/存储器
src(源操作数):与dest同类型的寄存器/存储器/立即数 说明:
? 会影响CF, OF, ZF, SF, PF, AF 标志位;
? 主要用于对一个数据分段相减时高位的减法运算 (3)DEC(Decrement):减一指令 格式:DEC dest 功能:dest←dest-1
dest(目的操作数):8/16位的寄存器/存储器 例:DEC CX ;CX←(CX) -1,16位运算
DEC X ;X←(X)-1,运算位数由X的类型确定 说明:
? 会影响标志OF, ZF, SF, PF, AF,但是CF标志不受影响; ? 减量指令常常用来修改计数器和存储器指针的值。 (4)NEG(Negate):求补指令(求相反数) 格式:NEG dest 功能:dest←0-dest dest(目的操作数):8/16位的寄存器/存储器 例: NEG Z ;Z←-Z,运算位数由Z的类型确定
说明:
会影响标志OF, ZF, SF, PF, AF, CF