设计一个子程序,功能:将一个全是字母,以0结尾的字符串,转化为大写
程序要处理的字符串以0作为结尾符,这个字符串可以如下定义:
db ‘conversation’,0
这个子程序,字符串后面一定要有一个0,标记字符串的结束,字符串可以依次读取每个字符来进行检测,如果不是0,就进行大写的转化,是0就结束,可以用jcxz来检测0
"ret" 一般是 "return" 的缩写。在编程中,"return" 指的是从一个函数中返回一个值。例如,在 Python 中,你可以这样写一个函数:
def add(x, y):
return x + y
这个函数将会接受两个参数 x 和 y,并返回它们的和。你可以调用这个函数,并将结果赋值给一个变量,例如:
result = add(1, 2)
在这个例子中,调用 add(1,...
CALL指令先把将来要返回的地址放入堆栈,再把即将被执行的过程的地址复制到指针寄存器上,当这个过程执行完要返回时,用RET指令将堆栈中存放的原来的地址放回指针寄存器上。
CPU下一步执行哪些内容,是由指针寄存器决定的,这个寄存器存放着地址编码,只要修改这个寄存器CPU就可以到指定位置执行了。32位的指针寄存器叫EIP,16位的叫IP。
a) (1)(IP)=((ss)*16+(sp))
b) (2)(sp)=(sp)+2
二.retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移;
CPU执行retf指令时,进行下面两步操作:
a) (1)(IP)=(
call指令和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP,它们经常被共同用来实现子程序的设计
10.1 ret 和 retf
ret指令用栈中的数据,修改IP的内容,从而实现近转移
CPU执行ret指令时,进行两步操作:
1,(IP) = ((ss)*16 + (sp))
2,(sp) = (sp) + 2
pop IP
retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移
CPU执行retf指令时,进行四步操作:
1,(IP) = ((ss)*16 + (sp))