汇编--子程序结构

过程名 PROC NEAR ( FAR )

过程名 ENDP

子程序的类型属性

(1)NEAR属性:调用程序和子程序在同一代码段中 (段内调用)

(2)FAR属性:调用程序和子程序不在同一代码段中 (段间调用)

子程序调用:隐含使用堆栈保存返回地址

子程序与分支程序的最大区别

子程序执行完要返回到主程序,也就是返回到CALL指令的下一条继续执行。在子程序中用RET指令作为返回指令。主程序和子程序的关系如图所示。

RET 返回指令

主程序将子程序的入口参数压入堆栈,子程序从堆栈中取出参数

子程序将出口参数压入堆栈,主程序弹出堆栈取得它们

结构伪操作 STRUC: 定义一种可包含不同类型数据的结构模式

格式: 结构名 STRUC 字段名1 DB ? 字段名2 DW ? 字段名3 DD ? …… 结构名 ENDS

局部符号:在本模块中定义,又在本模块中引用的符号

外部符号:在某一个模块中定义,而又在另一个模块中引用的符号。

PUBLIC 符号 EXTRN 符号:类型

多个模块之间的参数传送:

局部符号:在本模块中定义,在本模块中引用的符号

外部符号:在某一模块中定义,在另一模块中引用的符号

PUBLIC 符号 EXTRN 符号:类型

LOCAL伪指令

功能:为局部变量申请空间

时间: 2024-08-09 01:22:05

汇编--子程序结构的相关文章

常见汇编代码

# 常见汇编代码 # 1. 编写程序:比较AX,BX,CX中带符号数的大小,将最大的数放在AX中 code segment         assume cs:code                   mov ax,32         mov bx,74         mov cx,23                 sort: cmp ax,bx               jge X          ;如果ax大于等于bx就跟cx比较              xchg ax,b

ARM 汇编指令集

转载,方便查找用. ARM汇编指令集 一. 跳转指令    跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转: Ⅰ.使用专门的跳转指令. Ⅱ.直接向程序计数器PC写入跳转地址值. 通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用 MOV LR,PC 等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用. ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以

GNU风格ARM汇编编程实战之一 <C与汇编混合编程>

一.参考资料 1. <ARM GCC内联汇编手册>:http://www.ethernut.de/en/documents/arm-inline-asm.html 2. <__asm__ __volatile__内嵌汇编用法简述>:http://www.embedu.org/Column/Column28.htm 3. <A?R?M?内?嵌?汇?编?示?例>:http://wenku.baidu.com/view/72c12e4133687e21af45a990.htm

16位汇编中的伪指令

汇编中的伪指令(基于汇编编译器MASM讲解) 一丶什么是伪指令,以及作用 首先我们用汇编开发效率低,如何才能开发效率高,甚至开发速度比C语言或这个高级语言快 答案: 伪指令 什么是伪指令 伪指令是汇编编译器提供的,比如昨天我们写的汇编代码,假设调用一个Call我们每次都要手工处理 保存栈底,开辟就变量空间,保存寄存器环境....每次都要做,特别麻烦,所以编译器帮我们提供了伪指令,只要我们 按照汇编编译器的语法去写,那么这些汇编编译器则会自动帮我们补全 比如昨天的代码: ;调用开始,把参数压栈 m

ARM汇编初探---汇编代码中都有哪几类指令---ARM伪指令介绍

要学习一个东西首先要把概念搞清楚,下面只是自己的一些关于汇编的理解. 可执行文件中的01码是机器码,机器码不等于汇编码,虽然机器码可以很容易翻译成汇编码. 汇编码中包含很多汇编指令.伪指令和宏指令等,这些是不可以直接在机器上运行的. 机器指令是ARM指令集和Thumb指令集这些arm硬件支持的指令集组成的. 汇编码中的伪指令和宏指令这些都是汇编语言这个级别的指令,在汇编文件编译的时候汇编编译器as会去处理这些指令,在编译期间也会对宏进行展开,类似于gcc编译的时候对C代码中的宏展开一样.个人感觉

ARM汇编指令

ARM处理器的指令集可以分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.加载/存储指令.协处理器指令和异常产生指令6大指令. 一.跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转.Ⅰ.使用专门的跳转指令: Ⅱ.直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用

ARM汇编伪指令介绍

在ARM处理器汇编语言程序设计里,有一些特殊的指令助记符.这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊的指令助记符为伪指令,它们所完成的操作称为伪操作. 伪指令在源程序中的作用是为完成汇编程序做各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成了.在ARM处理器的汇编程序中,大体有如下几种伪指令:符号定义伪指令.数据定义伪指令.汇编控制伪指令.宏指令及其他伪指令. 伪操作符可以分为以下几类. 1)数据定义伪操作符 数据定义伪操作符主要包括LT

汇编大题

1.用主,子程序结构编写一个程序,计算sun = 1!+2!+3!+4!+5! 答案: ; 数据段 data segment sum dw 0 data  ends ;程序段 code segment assume cs:code,ds:data start: mov ax,data mov ds,ax xor ax,ax xor cx,cx mov cl,5 xunhuan1: call fact add sum,ax loop xuanhuan1 mov ah,4ch int 21h; fa

ARM汇编指令集

ARM处理器的指令集可以分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.加载/存储指令.协处理器指令和异常产生指令6大指令. 一.跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转.Ⅰ.使用专门的跳转指令: Ⅱ.直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用