来自于《Intel汇编语言程序设计》(第四版)的第八章。
让我们先来看看值传递,值传递相对简单,看以下代码:
.data
myData WORD 1000h ; this never changes
.code
main PROC
INVOKE Sub1, myData
exit
main ENDP
Sub1 PROC someData:WORD
mov someData,0
ret
Sub1 ENDP
程序使用 INVOKE 指令向Sub1传递参数myData的值,在最后的Sub1函数中虽然为someData赋了值,但是却并不影响myData的值。过于简单,不需要过多解释。
下面来看一下引用传递:
.data
myData WORD 1000h
.code
main PROC
INVOKE Sub2, ADDR myData ; pass by reference
exit
main ENDP
sub2 PROC dataPtr:PTR WORD
mov esi,dataPtr
mov WORD PTR[esi],0
ret
sub2 ENDP
可以看到在使用INVOKE调用Sub2时,将myData的地址传给了Sub2,而在Sub2中,参数是一个指向WORD的指针,Sub2接收了myData的地址之后,使用这个地址找实际上是在操作真正的myData,此时将0赋值给了myData,必然影响了myData中真正存储的值。
这便是高级语言中的传值和传址的汇编解释。
注意:在进行数据结构的传递时,一般采用引用传递的方式。
分享到:
相关推荐
第一部分是基础部分,以8086/8088为背景,以DOS和PC兼容机为软硬件平台,以MASM和TASM为汇编器,介绍汇编语言的有关概念,讲解汇编语言程序设计技术。第二部分是提高部分,以80386为背景,以新一代微处理器Pentium为...
第一部分是基础部分,以8086/8088为背景,以DOS和PC兼容机为软硬件平台,以MASM和TASM为汇编器,介绍汇编语言的有关概念,讲解汇编语言程序设计技术。第二部分是提高部分,以80386为背景,以新一代微处理器Pentium为...
第一部分是基础部分,以8086/8088为背景,以DOS和PC兼容机为软硬件平台,以MASM和TASM为汇编器,介绍汇编语言的有关概念,讲解汇编语言程序设计技术。第二部分是提高部分,以80386为背景,以新一代微处理器Pentium为...
1.3.2 汇编语言. . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3.3 指令操作数. . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.4 基本指令. . . . . . . . . . . . . . . . . . . . . . . . . 10 ...
Go中的参数调用约定将参数放置在堆栈上,因此您应编写汇编代码以引用堆栈以访问提供给函数的参数。 这可能与通常执行的结果不匹配,例如有时使用寄存器代替传递参数,但是引用堆栈似乎是执行此操作的最佳方法。 尚...
本书介绍编译器构造的一般原理和基本实现方法,主要内容包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。除了介绍命令式编程语言的编译技术外, 本书还介绍面向对象语言和函数式编程语言...
2.2.1 串和语言 2.2.2 正规式 2.2.3 正规定义 2.2.4 状态转换图 2.3 有限自动机 2.3.1 不确定的有限自动机 2.3.2 确定的有限自动机 2.3.3 NFA到DFA的变换 2.3.4 DFA的化简 2.4 从正规式到有限自动机 2.5 ...
他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工...
ref :引用传递 out : 7, namespace(名字空间) C#学习笔记(2)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期:2004-07-11 人气:8092 出处: write by cash(天下第...
9.3.1 抽象的汇编语言指令 146 9.3.2 生成汇编指令 148 9.3.3 过程调用 151 9.3.4 无帧指针的情形 151 程序设计:指令选择 152 推荐阅读 153 习题 154 第10章 活跃分析 155 10.1 数据流方程的解 156 10.1.1 活跃性...
在.aspx页面中,代码隐藏页模型的.aspx页面代码基本上和单文件页模型的代码相同,不同的是在script标记中的单文件页模型的代码默认被放在了同名的.cs文件中,.aspx文件示例代码如下所示。 “C#” AutoEventWireup=...
6.1.怎样定义和引用一维数组 6.1.1怎样定义一维数组 6.1.2怎样引用一维数组元素 6.1.3一维数组的初始化 6.1.4一维数组程序举例 6.2.怎样定义和引用二维数组 6.2.1怎样定义二维数组 6.2.2怎样引用二维...
6、修正“文本_加密”返回文本传递给“文本_解密”后长度不正确BUG,改为返回字节集。 7、改善“外部编辑框_取密码框文本”当不是密码输入属性时不做任何处理,感谢易友【@wjt741106】反馈。 8、恢复“文本_加密”与...
C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。 C++语言最重要的特点是...
3.4 汇编语言 54 3.4.1 概述 55 3.4.2 程序的本质 57 3.4.3 寄存器 58 3.4.4 寻址方式 60 3.4.5 汇编指令 61 3.4.6 C/C++ 语言和汇编 62 3.4.7 小结 63 3.5 其他语言 63 3.5.1 Forth 63 3.5.2 Lisp 64 3.5.3 Java 64...
3.4 汇编语言 54 3.4.1 概述 55 3.4.2 程序的本质 57 3.4.3 寄存器 58 3.4.4 寻址方式 60 3.4.5 汇编指令 61 3.4.6 C/C++ 语言和汇编 62 3.4.7 小结 63 3.5 其他语言 63 3.5.1 Forth 63 3.5.2 Lisp 64 3.5.3 Java 64...
18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
0002 使用汇编语言 2 0003 如何使用内联函数 2 0004 如何使用#define自定义宏 3 0005 使用goto语句进行无条件跳转 3 0006 while循环转为for循环 3 0007 do while循环的分析与使用 4 0008 利用条件...
2.2.1 值类型和引用类型 69 2.2.2 基本类型 71 2.3 命令:条件语句 72 2.3.1 if then 73 2.3.2 比较运算符 73 2.3.3 select case 75 2.4 值类型(结构) 75 2.4.1 布尔类型 76 2.4.2 整数类型 77 ...