对于可重入子程序,为什么不能利用固定的存储单元保存中间值?为什么不能利用约定存储单元传递参数?
答:
①约定存储单元保存的中间值在重入时可能被破坏。
②被中断后重新调用子程序,入口参数有可能被破坏,原调用的返回地址不正确。
所以,在设计重入子程序时不能利用约定存储单元传递参数和不能使用约定的存储单元保存中间值。...
- [somniumchase] 我一运行就说没有数字 01/01 11:44
- [游客] 为什么啊 08/07 15:36
- [游客] 如果想快一些 就改下面这里 dx值改成1H delay: push ax 04/19 02:53
- [lshhjx] 注释在程序中很重要,楼主不知道吗? 12/08 13:40
- [biaggi] 看不明白,在下還須學習 11/06 08:11
- [游客] 我运行的时候直接显示Unkown filename跳出了- -请问怎么改 06/16 21:44
- [游客] 勿庸置疑,注释是好习惯。与人方便自己方便。 04/12 10:33
- [游客] 老实说,看着真心累呀! 04/07 18:37
- [游客] 很无语,初学者就多看书,不要动不动要别人注释,基础打好了,再自己注释,这样比别人帮你注释好得多 12/17 19:43
- [dgkepu] 初学者:不懂,希望有多点注释带着学习学习! 12/07 20:52
- [游客] windows 7是一个64Bit操作系统,它不兼容DOS,无法识别16Bit系统。重装系统wind 02/28 21:05
- [游客] windows 7是一个64Bit操作系统,它不兼容DOS,无法识别16Bit系统。重装系统wind 02/28 21:05
- [466987333] 你好,高手,我想请教一个问题。 我用的是win7操作系统,32位的,里面没有找masm目录,是不是 12/12 17:30
- [lanfioncc] 那个太高级了。。。我还有点看不懂。。不过谢谢!!! 11/27 11:23
- [yc2010] 实验16中的 table: dw sub1,sub2,sub3,sub4 可不可以改成呢? 09/11 09:08
- [yc2010] mov bl,ah mov bh,0 add bx,bx ----------->这里为 09/07 21:03
- [yc2010] 为什么要add bx,bx呢? 09/07 20:55
- [yc2010] 那是不是像table[bx],ds[bx]....等(内存单元)都是表示一个字节呢? 09/06 21:10
- [masmaster] 杨季文的《80X86汇编语言程序设计教程》 09/01 12:52
- [游客] to masmaster shl左移4位,那al传进来的4,5,6位背景色不就没了. 为什 09/01 11:00
[2010-09-05 21:32] 习题4.10
阅读全文 |
评论次数(0) |
浏览次数(305) |
所属类型(汇编习题集)
[2010-09-05 17:24] 习题4.9
子程序的递归和冲入有何不同?
答:直接或间接调用子程序本身的调用行为成为递归调用。而重入则指的是子程序在中断后被重新调用。
子程序的重入和递归不同:重入是被动行为,递归是主动行为,重入前的调用和重入调用往往是互不相关,而递归调用前后密切相关。...
答:直接或间接调用子程序本身的调用行为成为递归调用。而重入则指的是子程序在中断后被重新调用。
子程序的重入和递归不同:重入是被动行为,递归是主动行为,重入前的调用和重入调用往往是互不相关,而递归调用前后密切相关。...
阅读全文 |
评论次数(0) |
浏览次数(310) |
所属类型(汇编习题集)
[2010-09-05 14:46] 习题4.8
如果利用堆栈传递参数,那么有两种平衡堆栈的方法,请比较两种方法
答:第一种是利用add指令将栈指针加4字节。以达到调用前后堆栈的平衡,另一种是用带立即数返回指令:ret 4。作用于第一种相同。...
答:第一种是利用add指令将栈指针加4字节。以达到调用前后堆栈的平衡,另一种是用带立即数返回指令:ret 4。作用于第一种相同。...
阅读全文 |
评论次数(0) |
浏览次数(299) |
所属类型(汇编习题集)
[2010-09-05 12:17] 习题4.7
在汇编语言中,主程序和子程序之间如何传递参数? 请举例说明每种方法。并比较。
答:
①利用指定的寄存器传递参数:
利用寄存器传统参数就是把参数放在指定的寄存器中。这种传递方法实现简单调用方便,但是只适用于参数较少的情况。
②利用指定的存储单元传递参数:
如果要传递的参数较多的情况下,可以利用指定存储单元的内存变量来传递参数。优点是子程序要处理的数据或要送出的结果都有独立的存储单元。编写程序不容易出错。缺点是通用性很差。
③利用堆栈传递参数:
可以使用堆栈传递入口参数, 主程序在调用子程序之前,把需要传递的参数依次入栈,子程序从栈中取得入口参数;如果使用堆栈传递出口参数...
答:
①利用指定的寄存器传递参数:
利用寄存器传统参数就是把参数放在指定的寄存器中。这种传递方法实现简单调用方便,但是只适用于参数较少的情况。
②利用指定的存储单元传递参数:
如果要传递的参数较多的情况下,可以利用指定存储单元的内存变量来传递参数。优点是子程序要处理的数据或要送出的结果都有独立的存储单元。编写程序不容易出错。缺点是通用性很差。
③利用堆栈传递参数:
可以使用堆栈传递入口参数, 主程序在调用子程序之前,把需要传递的参数依次入栈,子程序从栈中取得入口参数;如果使用堆栈传递出口参数...
阅读全文 |
评论次数(0) |
浏览次数(302) |
所属类型(汇编习题集)
[2010-09-05 12:15] 习题4.6
请对保护和恢复寄存器的两种方法比较
答:①把需要保护的寄存器的内容,在主程序这压入堆栈和弹出堆栈。这种方法的优点是在每次调用子程序时只要把主程序所关心的寄存器入栈。缺点是如果多次调用子程序时会很麻烦累赘。②在子程序一开始就把子程序中要改变的寄存器内容入栈,在返回之前出栈恢复这些寄存器的内容。 优点是在在主程序可方便的调用子程序而无需考虑要把哪些寄存器入栈,只需在子程序里写一次入栈和出栈的指令即可。...
答:①把需要保护的寄存器的内容,在主程序这压入堆栈和弹出堆栈。这种方法的优点是在每次调用子程序时只要把主程序所关心的寄存器入栈。缺点是如果多次调用子程序时会很麻烦累赘。②在子程序一开始就把子程序中要改变的寄存器内容入栈,在返回之前出栈恢复这些寄存器的内容。 优点是在在主程序可方便的调用子程序而无需考虑要把哪些寄存器入栈,只需在子程序里写一次入栈和出栈的指令即可。...
阅读全文 |
评论次数(0) |
浏览次数(322) |
所属类型(汇编习题集)
[2010-09-05 10:13] 习题4.5
是否可用过程返回指令ret调用某个过程?如果可能,请写出实现的程序片段
答:
可以的。
;-----------------------------------------------------
assume cs:code
code segment
start:
mov ax,offset ok;将标号s的偏移地址装入ax
push ax ;偏移地址入栈
ret ;IP=ss*10h+SP,CS不变
mov dl,'1'
mov ...
答:
可以的。
;-----------------------------------------------------
assume cs:code
code segment
start:
mov ax,offset ok;将标号s的偏移地址装入ax
push ax ;偏移地址入栈
ret ;IP=ss*10h+SP,CS不变
mov dl,'1'
mov ...
阅读全文 |
评论次数(0) |
浏览次数(278) |
所属类型(汇编习题集)
[2010-09-05 08:49] 习题4.4
是否可用段内调用指令调用远过程? 如何可以,请举例说明
答:不能。如果所定义的远过程far属性,那么对它的调用和返回必须都是far属性。...
答:不能。如果所定义的远过程far属性,那么对它的调用和返回必须都是far属性。...
阅读全文 |
评论次数(0) |
浏览次数(369) |
所属类型(汇编习题集)
[2010-09-05 08:48] 习题4.3
请把过程调用指令call和无条件跳转指令jmp比较,说明他们的异同
答:他们都可以实现段内段间转移,不同的是,call保存下一条指令的地址。而jmp只是简单的跳转。...
答:他们都可以实现段内段间转移,不同的是,call保存下一条指令的地址。而jmp只是简单的跳转。...
阅读全文 |
评论次数(0) |
浏览次数(258) |
所属类型(汇编习题集)
[2010-09-05 08:44] 习题4.2
子程序说明信息应包含哪些内容?举例说明
答:子程序说明信息通常由下面几部分组成
①子程序名
②功能描述
③入口和出口参数
④所用寄存器和存储单元
⑤使用算法和性能指标
⑥调用注意事项和说明
例如:
;子程序名:hello
;功能:显示字符串
;入口参数:段地址为DS,偏移地址为BS指向的字符串
;出口参数:无
;...
答:子程序说明信息通常由下面几部分组成
①子程序名
②功能描述
③入口和出口参数
④所用寄存器和存储单元
⑤使用算法和性能指标
⑥调用注意事项和说明
例如:
;子程序名:hello
;功能:显示字符串
;入口参数:段地址为DS,偏移地址为BS指向的字符串
;出口参数:无
;...
阅读全文 |
评论次数(0) |
浏览次数(284) |
所属类型(汇编习题集)
[2010-09-05 08:34] 习题4.1
把怎样的程序片段设计成子程序或过程?
答:子程序就是一组在程序中实现一定功能且需要重复使用的一组指令代码。可以通过指令call调用,在子程序中,用ret注明返回。子程序定义格式如下:
子程序名 PROC
。。。
。。。
RET
子程序名 ENDP...
答:子程序就是一组在程序中实现一定功能且需要重复使用的一组指令代码。可以通过指令call调用,在子程序中,用ret注明返回。子程序定义格式如下:
子程序名 PROC
。。。
。。。
RET
子程序名 ENDP...
阅读全文 |
评论次数(0) |
浏览次数(293) |
所属类型(汇编习题集)