第3章8086指令系统 数据传送指令 算术运算指令 逻辑运算指令 串操作指令 控制传送指令 ·CPU控制指令
第3章 8086指令系统 • 数据传送指令 • 算术运算指令 • 逻辑运算指令 • 串操作指令 • 控制传送指令 • CPU控制指令
3.4|A-32的通用指令(P71) ■8086汇编语言程序举例 MY DATA SEGMENT SUM DB MY DATA ENDS MY CODE SEGMENT ASSUME CS: MY CODE. DS: MY DATA PORTⅤ AL EQU3 MAIN PROC FAR GO: PUSH DS MOV AX.O PUSH AX MOV AX.MY DATA
3.4 IA-32的通用指令(P71) 8086汇编语言程序举例 MY_DATA SEGMENT SUM DB ? MY_DATA ENDS MY_CODE SEGMENT ASSUME CS:MY_CODE,DS:MY_DATA PORT_VAL EQU 3 MAIN PROC FAR GO: PUSH DS MOV AX,0 PUSH AX MOV AX,MY_DATA
3.4|A-32的通用指令(P71) MOV DS.AX MOV SUM,O CYCLE. CMP SUM, 100 JNA NOT DONE MOV ALSUM OUT PORT VALSAL HLT NOT DONE: N AL. PORT VAL ADD SUMAL JMP CYCLE
3.4 IA-32的通用指令(P71) MOV DS,AX MOV SUM,0 CYCLE: CMP SUM,100 JNA NOT_DONE MOV AL,SUM OUT PORT_VAL,AL HLT NOT_DONE: IN AL,PORT_VAL ADD SUM,AL JMP CYCLE
3.4|A-32的通用指令(P71) RET MAIN ENDP MY CODE ENDS END GO 1、汇编语言源程序是分段的,通常每个模块程 序包括数据段、堆栈段和若千代码段。 每个程序结构类似,可以复制
3.4 IA-32的通用指令(P71) RET MAIN ENDP MY_CODE ENDS END GO 1、汇编语言源程序是分段的,通常每个模块程 序包括数据段、堆栈段和若干代码段。 2、每个程序结构类似,可以复制
3.4|A-32的通用指令(P71) 3.4.3逻辑运算指令 AND: OR: NOT. XOR 移位指令: SAL; SAR; SHL, SHR ROL: ROR: RCL: RCR
3.4 IA-32的通用指令(P71) 3.4.3 逻辑运算指令 AND;OR;NOT;XOR 移位指令: SAL;SAR;SHL;SHR ROL;ROR;RCL;RCR
3.4.3逻辑运算指令 ■循环移位 最高位最低位 最高位最低位 CF CF (a)Rol (C)RCL 最高位 最低位 最高位 最低位 CF →CF→ (b)rOr ( d)RCR 返回
3.4.3 逻辑运算指令 循环移位 最高位 最低位 最高位 最低位 返回 CF CF (a) ROL (c) RCL 最高位 最低位 最高位 最低位 CF (b) ROR CF (d) RCR
3.4.3逻辑运算指令 ■从功能示意图可知,RL和R0R在移位时未把CF包含 在循环圈中,而RCL和RCR却把CF包含在循环圈内。 ■4条循环移位指令只影响标志位CF和0F ■用非循环移位指令时,左移一位相当于原数乘2(不 能超过数的表示范围),而右移一位相当于原数除2 当编程乘以或除以某一常数时,采用移位指令执行 速度要快得多。 返回
3.4.3 逻辑运算指令 从功能示意图可知,ROL和ROR在移位时未把CF包含 在循环圈中,而RCL和RCR却把CF包含在循环圈内。 4条循环移位指令只影响标志位CF和OF。 用非循环移位指令时,左移一位相当于原数乘2(不 能超过数的表示范围),而右移一位相当于原数除2。 当编程乘以或除以某一常数时,采用移位指令执行 速度要快得多。 返回
3.4.3逻辑运算指令(P95) ■例:X*10,设X在A中(第3版在P?,第4版在P95) MOV BL 10 MUL BL ■共需70~77个T状态时间(查阅附录1) 返回
3.4.3 逻辑运算指令(P95 ) 例:X*10,设X在AL中(第3版在P?,第4版在P95) MOV BL,10 MUL B L 共需70~77个T状态时间(查阅附录1) 返回
3.4.3逻辑运算指令 采用移位和加指令:需T状态 SAL AL. 1 2T X*2 MOV BL AL 2T ADD AL. AL 3T X*4 ADD AL. AL 3T X*8 ADD AL BL 3T X*10 只需13个T状态时间,用MUL指令需要70-77 个T状态时间
3.4.3 逻辑运算指令 采用移位和加指令: 需T状态 SAL AL,1 ; 2T X*2 MOV BL,AL ; 2T ADD AL,AL ; 3T X*4 ADD AL,AL ; 3T X*8 ADD AL,BL ; 3T X*10 只需13个T状态时间,用M U L指令需要70-77 个T状态时间
3.4.3逻辑运算指令 ■例3-1:ASC|1码→BCD码(3版在P?,4版在P95) 35H→05H 33H→03H (1)AND AL, OFH (2)SUB AL, 30H (3)MOV CL, 04 SAL AL, CL
3.4.3 逻辑运算指令 例3-1:ASCII码→BCD码(3版在P?,4版在P95) 35H→05H 33H→03H (1)AND AL,OFH ; (2)SUB AL,30H ; (3)MOV CL,04 ; SAL AL,CL ;