公 (4)除法指令 带符号除法 格式:| DIV SRO 所执行的操作 字节除数:AL·(AX)(SRC)之商 AH(AX)/(SRC)之余数 字除数:AX(DX:AX)(SRC)之商 DX(DX:AX〈SRC)之余数 商和余数是带符号的:商的符号符合一般代数符号规 则,余数的符号与被除数相同 ·无符号除法 格式:DSRC 所执行的操作: 与IDⅣ相同,但操作数,商和余数均是无符号的
(4) 除法指令 • 带符号除法 • 格式:IDIV SRC 所执行的操作: 字节除数:AL (AX)/(SRC) 之商 AH (AX)/(SRC) 之余数 字除数: AX (DX:AX)/(SRC)之商 DX (DX:AX)/(SRC) 之余数 商和余数是带符号的:商的符号符合一般代数符号规 则,余数的符号与被除数相同. • 无符号除法 • 格式:DIV SRC 所执行的操作: 与IDIV相同,但操作数,商和余数均是无符号的
公 例:二进制四则混合算术运算程序段 试计算: AX一(VxXY+z-540)X之商 DX-余数 (其中,Ⅹ,Y,乙,V均为字变量)
例:二进制四则混合算术运算程序段 • 试计算: AX (V-(X*Y+Z-540))/X 之商 DX 余数 (其中,X ,Y ,Z ,V 均为字变量)
公 PROGRAM MOVAX.X MULY;∫X*Y,结果在DXA以中 MO∨cX,AX; MOV BX,DX;∫将乘积存在BX:CX中 MOV∨AX,z: CWD ADD CX,AX;将符号扩展后的Z加到BXCX中的乘积上去 ADC BX DX SUB CX. 540 SBB BX. 0 从BCX中减去540 MOVAXV CWD SUB AX,CX;}从符号扩展后的中减去BXCX)并 SBB DX,BX;除以X商在A中,余数在DX中。 DN×;
MOV AX, X ; IMUL Y ; X*Y,结果在DX:AX中 MOV CX, AX; MOV BX, DX; 将乘积存在BX:CX中 MOV AX, Z; CWD ADD CX, AX ; 将符号扩展后的Z加到BX:CX中的乘积上去 ADC BX, DX; SUB CX, 540; SBB BX, 0; 从BX:CX中减去540 MOV AX, V; CWD; SUB AX, CX; 从符号扩展后的V中减去(BX:CX)并 SBB DX, BX; 除以X,商在AX中,余数在DX中。 IDIV X; PROGRAM
公 2.BcD数运算指令 所谓BCD数,就是二进制编码的十进制数( Binary Coded Decima),它是用4位二进制码表示一位十进制数(0000 1001是合法BCD码;1010~1111是非法BCD码 ·组合BCD数:用一个字节表示2位BCD数 例:37 分离BCD数:用一个字节的低4位表示一位BCD数,高4 位为0 例:37 0011 0111 00000011 0000 0111
• 所谓BCD数,就是二进制编码的十进制数(Binary Coded Decimal),它是用4位二进制码表示一位十进制数(0000~ 1001是合法BCD码;1010~1111是非法BCD码). • 组合BCD数:用一个字节表示2位BCD数 例:37 • 分离BCD数:用一个字节的低4位表示一位BCD数,高4 位为0. 例:37 0011 0111 0000 0011 0000 0111 2. BCD数运算指令
公 (1)组合BCD数十进制调整原理 例1:18+7=25 00011000 18 +00000111- 00011111 (1111是非法BCD码) 需要对结果进行变换(调整),方法:“加6调整” 00011111 +00000110 00100101 25(正确结果) 第3位向第4位低半字节向高半字节有进位, AF=1
(1)组合BCD数十进制调整原理 例 1 : 18 + 7 = 25 0 0 0 1 1 0 0 0 - - - - - - - - 18 + 0 0 0 0 0 1 1 1 - - - - - - - - 7 0 0 0 1 1 1 1 1 - - - - - - - - ? (1111是非法BCD码) 需要对结果进行变换(调整),方法:“加6调整” 0 0 0 1 1 1 1 1 + 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 - - - - - - - - 25(正确结果) 第3位向第4位(低半字节向高半字节)有进位, AF=1