. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验10 。1的问题  [已解决] 回复[ 3次 ]   点击[ 391次 ]  
yangle0125
[帖 主]   [ 发表时间:2009-01-31 21:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-09 12:50
我在想一个问题,就是子程序应该将哪些寄存器进栈呢?按书上说的是把子程序中用到的寄存器进栈,但我想用来传递参数的寄存器应该不用进栈,因为在不影响子程序执行结果的情况下修改这些寄存器的内容不会对外部程序造成影响 
具体到这个实验就是dx,ds,si不用进栈,不知我讲得对不对,余下的凡是在子程序中用到的寄存器都应该进栈,代码如我所写。 
在论坛中看到好多人的程序只对cx,si进栈,不解ing
yangle0125
[第1楼]   [ 回复时间:2009-01-31 21:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-09 12:50
show_str:
push ax
push bx
push es
push di
mov ax,0b800h 
mov es,ax 
mov di,0 
mov al,0a0h
mul dh
mov bx,ax
mov al,2
mul dl
add bx,ax
mov al,cl
mov ch,0
s:
mov cl,[si]
jcxz ok 
mov es:[bx+di],cl
inc di
mov es:[bx+di],al
inc di
inc si
jmp s
ok:
pop di
pop es
pop bx
pop ax
ret
zcouyangpeng
[第2楼]   [ 回复时间:2009-02-02 10:10 ]   [引用]   [回复]   [ top ] 
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36
在子程序中用到的寄存器都应该进栈 


恩,有返回值的可以考虑用内存存放 返回值

乱该代码,会出麻烦的。
yangle0125
[第3楼]   [ 回复时间:2009-02-06 09:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-09 12:50
此贴由 贴主 于 [ 2009-02-06 09:21 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved