微机原理与应用:汇编语言经典程序设计举例上
本节课程主要讲授微机原理与应用中的汇编语言经典程序设计举例,包括双字节补码减法程序设计、双字节补码求补程序设计、查表程序设计和十六进制数转换成 ASCII 码程序设计等。
1. 双字节补码减法程序设计
双字节补码减法程序设计的主要任务是完成两双字节补码相减的运算,设减数和被减数分别存放在 R2R3 和 R4R5 中,运算的结果存放在 R6R7 中。该程序设计的入口参数是子程序名 COMSUB,减数和被减数分别存放在 0 区寄存器 R2R3 和 R4R5 中,出口参数是运算的结果存放在 0 区寄存器 R6R7 中。如果运算结果发生溢出,使 00H 位单元 =1 ;反之,使 00H 位单元 =0 。
程序设计的步骤如下:
* 取补码数据的低 8 位于 ACC
* 补码数据的低 8 位相减
* 存放补码数据的低 8 位相减的结果
* 取补码数据的高 8 位于 ACC
* 补码数据的高 8 位相减,并减借位
* 存放补码数据的高 8 位相减的结果
* 将溢出位的状态传入 Cy
* 将数据运算可能产生的溢出位传入 00H 位
* 恢复现场
2. 双字节补码求补程序设计
双字节补码求补程序设计的主要任务是完成一双字节补码求补,设补码存放在 R2R3 中,将求补的结果存放在 R4R5 中。该程序设计的入口参数是子程序名 COMPL,补码存放在 0 区寄存器 R2R3 中,出口参数是求补的结果存放在 0 区寄存器 R4R5 中。
程序设计的步骤如下:
* 取补码的低 8 位于 ACC
* 补码数据的低 8 位取反
* 补码数据的低 8 位取反后再加 1
* 存放补码数据的低 8 位处理的结果
* 取补码的高 8 位于 ACC
* 补码数据的高 8 位取反
* 加上低 8 位处理时产生的进位
* 存放补码数据的高 8 位运算的结果
* 恢复现场
3. 查表程序设计
查表程序设计的主要任务是根据 x 与 y 的不同特点,查表程序有几种不同的类型。其中,线性查表是指在查表中, x 为序号 i , i={0 , 1 , 2 ,… n} ,根据 i 查找 y ;设 y 为 ai ,是预先存放在程序存储器表格中的数据。
4. 十六进制数转换成 ASCII 码程序设计
十六进制数转换成 ASCII 码程序设计的主要任务是将一个 16 进制数转换成相应的 ASCII 码。需转换的十六进制数放在寄存器 R5 中,转换好的 ASCII 码也放在 R5 中。该程序设计的入口参数是子程序名 HAC,需转换的十六进制数放在 0 区寄存器 R5 中,出口参数是转换好的 ASCII 码也放在 0 区寄存器 R5 中。