例、将AL中的8位无符号数转换为压缩型BCD数→AX。 除10取余数便得BCD数。 MOV ALZDH MOV CL 4 MOV BL 10 MOAH,0→扩展被除数为字类型 DIV BL→商→AL,余数→AH(个位数) MOV BHAH;个位暂存 MOV AH.O 再扩展被除数 DIV BL→商→AL(百位数),余数→AH(十位数) SHL AH CL 合并十位与个位→BH OR BHAH MOV AHAL MOV ALBH AX=0125H
例、将AL中的8位无符号数转换为压缩型BCD数→AX。 除10取余数便得BCD数。 MOV AL,7DH MOV CL,4 MOV BL,10 MOV AH,0 →扩展被除数为字类型 DIV BL →商→AL,余数→AH(个位数) MOV BH,AH ;个位暂存 MOV AH,0 ;再扩展被除数 DIV BL →商→AL(百位数),余数→AH(十位数) SHL AH,CL OR BH,AH MOV AH,AL MOV AL,BH ;AX=0125H 合并十位与个位→BH
二带符号数的符号扩展指令 1将字节扩展成字 格式:CBW 操作:将AL中的符号扩展至AH中。 2将字转换成双字 格式:CWD 操作:将AX中符号扩展至DX中 两指令都是隐含寻址,即被扩展数在AL或AX→AX或 DX: AX
二.带符号数的符号扩展指令 1.将字节扩展成字 格式:CBW 操作:将AL中的符号扩展至AH中。 2.将字转换成双字 格式:CWD 操作:将AX中符号扩展至DX中。 • 两指令都是隐含寻址,即被扩展数在AL或AX→AX 或 DX:AX
例。-4001H÷4 MOAX,-4001H:对带符号数一定使用符号扩展指令 CWD MOV CX 4 IDI∨CX ;若用字节除则产生溢出 例。实现单精度的四则混合运算 [U-(XY+Z-540/X-AXIR DX 已知UXY乙均为带符号数 DATA SEGMENT U DW 7FFFH DW 50 DW1000 DW-80 DATA ENDS
例. ﹣4001H ÷ 4 MOV AX ,﹣4001H;对带符号数一定使用符号扩展指令 CWD MOV CX , 4 IDIV CX ; 若用字节除则产生溢出 例. 实现单精度的四则混合运算 [U-(X*Y+Z-540)]/X→AX…DX, 已知U,X,Y,Z均为带符号数。 DATA SEGMENT U DW 7FFFH X DW 50 Y DW 1000 Z DW -80 DATA ENDS
MOV AX X IMUL Y MOV CX AX X火Y→BX:CX MOV BX DX MOV AX, Z Z扩展→DX:AX CWD ADD CX AX XY+Z→BX:CX ADC BX DX SUB CX540 X*Y+Z--540>BX: CX SBB BX 0 MOV AX U U扩展→DⅩ:AX CWD SUB AX CX SBB DX, BX [U-(.1/X>AX.DX IDIV X
MOV AX , X IMUL Y MOV CX , AX X*Y→BX:CX MOV BX , DX MOV AX,Z Z扩展→DX:AX CWD ADD CX , AX X*Y+Z→BX:CX ADC BX , DX SUB CX , 540 X*Y+Z-540→BX:CX SBB BX , 0 MOV AX , U U扩展→DX:AX CWD SUB AX , CX SBB DX , BX [ U-(…)]/X→AX…DX IDIV X
作业:P.164.1.(2)(视为无符号数) (3)(视为带符号数)
作业:P.164. 1.(2)(视为无符号数) (3)(视为带符号数)