0%

第四章_子程序设计

调用与返回

调用

段内调用

直接CALL子程序名/AX,BX等16位寄存器/一个字大小的单元

段间调用

直接CALL子程序名/一个双字大小的单元

返回

段内返回

弹出送IP

段间返回

弹出送CS和IP

带弹出值的返回

汇编指令格式为:RET n
其中n为一个立即数,长度为2字节。并且是一个偶数。

(1)从堆栈弹出1个字送IP(段内返回)或2个字送IP和CS;

(2)执行 SP<=(SP)+n 。将堆栈中已经用过的参数(n个字节)弹出舍去.

参数的传递

堆栈的使用

  1. 在CALL的时候,就已经将返回的IP压入堆栈了,这个容易被忽视
  2. 堆栈中处理都是2个字节2个字节处理
  3. 要想跳跃访问堆栈只能用BP

地址表的使用

代码转换

ASCII码与int类型数之间的相互转换

ASCII的char转int

int转ASCII的char

  1. 16位无符号二进制数表示的十进制数范围为0—65535,需要分别求出万位、千位、百位、十位和个位的值。
  2. 从16位二进制数中能够减10000的次数就是万位的值,剩下的数再用1000去减,这样依次进行下去,直至个位。

二进制转十进制

用10去除二进制数,所得余数为十进制数的个位。其商再除以10,所得余数为十位,如此反复,直到商为0。

十六进制数与BCD码的转换