sub指令
格式:sub r/m,r/m/imm
源操作数和目的操作数不能同时为内存地址
sub al,35
sub dx,ax
sub dx,[0x2002]
sub byte [0x2002],37
sub [0x2002],al
neg求补指令
格式:neg r/m
neg al
neg di
neg byte [0x2002]
作用:连同符号位取反,再加1
1100 0100(-60)-> 0011 1100(60)
0000 1000(8)-> 1111 1000(8)
区分无符号数和有符号数
大多数指令既适用于有符号数,也适用于无符号数
特例:无符号数乘法指令:mul
有符号数乘法指令:imul
无符号数除法指令:div
有符号数除法指令:idiv
有符号数除法指令idiv
;如果在指令中指定的是8位寄存器或8位操作数的内存地址,
意味着被除数在寄存器ax里
;相除后,商在寄存器al里,余数在寄存器ah里
idiv bh
idiv byte [0x2002]
;如果在指令中指定的是16位寄存器或16位操作数的内存地址,
意味着被除数是32位的,低16位在ax里,高16位在dx里
;相除后,商在寄存器ax里,余数在寄存器dx里
idiv bx
idiv word [0x2002]
;如果在指令中指定的是32位寄存器或32位操作数的内存地址,
意味着被除数是64位的,低32位在eax里,高32位在edx里
;相除后,商在寄存器eax里,余数在寄存器edx里
idiv ebx
idiv dword [0x2002]
有符号数的符号扩展指令
+7
0000 0111 0x07
0000 0000 0000 0111 0x0007
0000 0000 0000 0000 0000 0000 0000 0111 0x00000007
-3
1111 1101 0xFD
1111 1111 1111 1101 0xFFFD
1111 1111 1111 1111 1111 1111 1111 1101 0xFFFFFFFD