汇编语言-其他转移指令CALL

汇编语言-其他转移指令CALL,第1张

jcxz

指令格式: jcxz标号

功能: 如果cx=0 则转移标出处执行

       当cx!=0 什么也不做(程序向下执行)

根据位移进行相对转移的意义

    jmp short标号

    jmp near ptr标号

    jcxz标号

    loop标号

在它们对应的机器码中不包含转移的目的地址,而包含的是到目的地址的位移。

1、如果loop s的机器码中包含的是s的地址,则就对程序段在内存中的偏移地址有了严格的限制,易引发错误。

2、当机器码中包含的是转移的位移,无论s处的指令地址是多少,loop指令转移的相应位移是不变的。

mov ax,0

call s

mov ax,4c00h

int 21h

s:add ax,1

ret

调用子程序call指令

返回 ret指令

实质: 流程转移指令,它们都修改IP,或同时修改CS和IP

格式call 标号

cpu执行call指令,进行两步 *** 作,call指令调用之后话牵扯到一个返回(ret)的问题,执行完标号处指令,怎么返回到当前调用的call 标号 处去执行下一条指令呢?

(1)将当前的ip或cs和ip压入栈中

(2)转移到标出执行指令

    16位位移= “标号”处的地址-call指令后的第一个字节的地址

    16位位移的范围为[-32768,32767] 用补码表示

    16位移由编译程序在编译时算法。

call word ptr内存单元地址word = 字(16位)

相当于push ip

       jmp word ptr内存单元地址

mov sp,10h

mov ax,0123h

mov ds:[0],ax

call word ptr ds:[0]

执行后(ip)=0123H (sp)=0EH

call dword ptr内存单元地址dword双字(32位)

返回指令ret和retf

call和ret和retf配合使用 

例:计算2的n次方,计算前n的值由cx提供。

assume cs:code

codeseg ment 

start:

    mo ax,2

    mov cx,3

    call s

    mov bx,ax

    mov ax,4c00h

    int 21h

s:add ax,ax

    loop s

    ret

这个例子虽然可以完成功能,但是没有栈这样会产生安全问题,而且ret是用于栈中的

例: 为call和ret指令设置栈

assume cs:code,ss:stack

stack segment

    db 8 dup(0)

    db 8 dup(0)

stack ends

code segment

start:

    mov ax,stack

    mov ss,ax

    mov sp,16

    mov ax,1000

    call s

    mov ax,4c00h

    int 21h

s:add ax,ax

    ret

code ends

end start

解释三菱PLC CALL指令的具体用法如下下:

连接时使用呼叫,调用P1后跳过主程序,先执行P1子程序,调用后返回主程序。P1作为指针存在。如果调用未接通,则不执行调用,直接执行主程序。调用程序可以嵌套,见下图。一个子例程可以调用另一个子例程。如图所示:

PLC CALL 简介:

CALL通常指REMOTE CALL、游戏CALL,指一种注入外部EXE程序从外部调用函数的技术。找CALL一般使用OD等工具,而CALL的使用一般需要编写复杂的汇编代码。在快手(AAuto Quicker)中推出了一种通用CALL技术,可以象声明WIN API一样声明CALL.下面是一个简单的示例:

//外部CALL读取命令行

//列出所有已运行进程的命令行参数

import winex

io.open()

//遍历所有窗口

call是调用子程序,ret是返回。

就是说call之后就开始执行子程序,而执行到ret的时候回到call下面那句代码处执行

call

pro

mov

ax,bx

pro:

...

ret

执行call后跳转到pro处开始执行子程序,执行到ret后返回到mov出执行


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8140938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存