Chinaunix首页 | 论坛 | 博客
  • 博客访问: 512110
  • 博文数量: 161
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1947
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-25 01:20
文章分类

全部博文(161)

文章存档

2011年(44)

2010年(47)

2009年(48)

2008年(22)

我的朋友

分类:

2009-08-28 23:11:36

 call ret
1>
都是转移指令,修改ip,或同时修改cs ip
ret 指令用栈中的数据,修改ip的内容,实现近转移 pop to ip
retf 指令用栈中的数据,修改ip,cs的内容,实现远转移pop to ip/ pop to cs
格式
ret /retf
依靠栈来弹出 cs 和ip
作业
mov ax,1000h
push ax
mov ax,000h
push ax
retf
2>
call指令
执行call时候
1将当前的ip或,cs和ip push to stack
2转移
不能实现短转移

3>依据位移进行转移的call指令
push ip
jmp near ptr 标号

4>转移地址位目的地址的call指令
push cs
push ip
jmp far ptr 标号 ;先ip 后cs
作业
ax 0012h
ax=1010h
5>
转移地址在内存中的call指令
push ip
jmp 16位寄存器
作业0006H

6>
转移地址在内存中的call指令
1 call word ptr 内存单元地址
push ip
jmp word ptr 内存单元
2call dword ptr 内存单元地址
push  cs
push ip
jmp dword ptr 内存单元

6>call 个ret的配合
框架

assume cs:code
code segment
main:
 ;
 ;
 call sub1                   ;push 保存ip
 ;
 mov ax,4c00
 int 21h          
sub1:   ;                          ;子程序
 call sub2
 ;
 ret                         ;pop 原来的ip
sub2:   ;                           ;字程序
 ;
 ret
code ends
end main

7>
mul指令
两个数相乘法
两个8位:一个默认在ah,另一个8位寄存器或内存单元
两个16位:一个默认在ax中,另一个16位寄存器或内存单元
结果:8位ah中 /16位,高位--dx,低位--ax

8>模块化程序设计
将复杂的问题分解
利用call ret指令,我们可以用简洁的方法,实现多个相互联系
功能独立的子程序来解决一个复杂的问题

9>参数和结构传递的问题
实际是:如何存储子程序需要的参数和产生的返回值
用寄存器来存储参数和结果最常用的方法
调用者:将参数送入参数寄存器,从结果寄存器中取到返回值
子程序:从参数寄存器取得参数,将返回值送入结果寄存器
data
dw  1,2,3,4,5,6,7,8
dd  0,0,0,0,0,0,0,0
start mov ax,data
mov ds,ax
mov si ,0
mov di,16
mov cx,8
s:
mov bx,[xi]
call cube
mov [di].2,dx  ; 偏移地址(di)+2 ,dx为高的16bits 写入地址
add si,2
add di,4
loop sh
int 21h

10>
批量数据的传送
将批量数据放在内存中,将他们所在内存空间的首地址放在寄存器中,传递给需要的子程序
and byte ptr [si],11011111b  ?
11>寄存器的冲突
bx定位数据项,si定位元素
子程序中使用的寄存器,很可能在主程序中也要使用!造成寄存器使用上的冲突
解决方案:
1:在编写的子程序的时候,注意看看子程序中有没有用到会产生冲突的寄存器
2:在编写子程序的时候,不要使用会产生冲突的寄存器
实际这两个方案不可行
简单通用解决办法
子程序开始:
子程序中的寄存器push
子程序内容
子程序中的寄存器pop
return ret/retf

12>课程设计
子程序-字符显示
子程序-除法溢出
子程序-数值显示
阅读(1141) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-06-05 02:19:17

大连法律咨询在线 http://www.fabowang.com 大连律师在线咨询 http://www.fabowang.com 大连法律顾问网 http://www.fabowang.com 大连律师咨询 http://www.fabowang.com