.
daa xchg al,ah adc al,bh daa xchg al,ah ret 〔解答〕
压缩BCD码加法:AX←AX+BX 出口参数:AX=BCD码和
〔习题2.28〕AAD指令是用于除法指令之前,进行非压缩BCD码调整的。实际上,处理器的调整过程是:AL←AH×10+AL,AH←0。如果指令系统没有AAD指令,请用一个子程序完成这个调整工作。
〔解答〕
shl ah,1 ;ah=2*a (设原ah=a) mov dl,ah ;dl=2*a mov cl,2 ;设定移位次数 shl ah,cl ;ah=8*a add ah,dl ;ah=10*a add al,ah ;al=10*a+al xor ah,ah ;清零ah int 3 ;返回DOS
注意: 入口:AX中存放有“和”(两非压缩BCD码) 出口:AL中 已为调整后的二进制数 〔习题2.29〕解释如下有关中断的概念:
(1) 内部中断和外部中断 (2) 单步中断和断点中断 (3) 除法错中断和溢出中断 (4) 中断向量号和中断向量表 〔解答〕
(1)内部中断是由于8086CPU内部执行程序引起的程序中断;外部中断是来自8086CPU之外的原因引起的程序中断;
(2)单步中断是若单步标志TF为1,则在每条指令执行结束后产生的中断;断点中断是供调试程序使用的,它的中断类型号为3通常调试程序时,把程序按程序的任务分成几段,然后,每段设一个段点;
- 17 -页
.
(3)除法错中断是在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围产生的中断;溢出中断是在执行溢出中断指令INTO时,若溢出标志OF为1时产生的中断;
(4)中断向量号是 中断类型号;中断向量表是中断向量号与它所对应的中断服务程序起始地址的转换表。
〔习题2.30〕试比较INT n和段间CALL指令、IRET和段间RET指令的功能。
〔解答〕
INT n 响应中断时,除象CALL保护断点外,还应保护FR;段间CALL指令用在主程序中实现子程序的调用。IRET 返回时,除象RET恢复断点外,还应恢复FR;子程序执行完成后,应返回主程序中继续执行,这一功能由RET指令完成。
- 18 -页