汇编语言最大优势之一:二进制移位和循环移位技术
7.1 *移位和循环移位指令
1、逻辑左移、逻辑右移(位元乘除法)
2、算术左移、算术右移
3、循环左移、循环右移
4、带进位的循环左移、带进位的循环右移
include Irvine32.inc
;使用移位指令,实现((AX)*5+2)/8的功能
.data
var1 WORD 0
.code
main PROC
mov ax,6
mov bx,6
shl ax,2
add bx,ax
add bx,2
shr bx,3
mov var1,bx
main ENDP
END main
7.3 *乘法和除法指令
1、无符号数乘法
2、有符号数乘法
3、无符号数除法
4、有符号数乘法
7.4 扩展加减法
对基本没有大小限制的数进行加减法的技术
1、ADC(带进位加法)
2、SBB(带借位减法)
附:练习题
判断下列指令执行后,eax,ecx,esi的值分别是多少?(5分)
mov eax, 6
shl eax,3
mov ebx,eax
shl ebx,1
sub ebx,eax
mov ecx,8
mov edx,30
shl ecx,3
sub ecx,edx
mov esi,eax
add esi,ecx
include Irvine32.inc
.code
main PROC
mov eax,6 ;eax=6
shl eax,3 ;eax=48
mov ebx,eax ;ebx=48
shl ebx,1 ;ebx=96
sub ebx,eax ;ebx=48
mov ecx,8 ;ecx=8
mov edx,30 ;edx=30
shl ecx,3 ;ecx=64
sub ecx,edx ;ecx=34
mov esi,eax ;esi=48
add esi,ecx ;esi=82
main ENDP
END main