`
qdujunjie
  • 浏览: 108716 次
  • 性别: Icon_minigender_1
  • 来自: Mars
社区版块
存档分类
最新评论

汇编语言值传递和引用传递代码分析(6)

阅读更多

 

 

来自于《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中真正存储的值。

 

这便是高级语言中的传值和传址的汇编解释。

 

 

 注意:在进行数据结构的传递时,一般采用引用传递的方式。

 

 

0
0
分享到:
评论

相关推荐

    8086/8088汇编语言程序设计教程

    第一部分是基础部分,以8086/8088为背景,以DOS和PC兼容机为软硬件平台,以MASM和TASM为汇编器,介绍汇编语言的有关概念,讲解汇编语言程序设计技术。第二部分是提高部分,以80386为背景,以新一代微处理器Pentium为...

    80X86汇编语言程序设计

    第一部分是基础部分,以8086/8088为背景,以DOS和PC兼容机为软硬件平台,以MASM和TASM为汇编器,介绍汇编语言的有关概念,讲解汇编语言程序设计技术。第二部分是提高部分,以80386为背景,以新一代微处理器Pentium为...

    80x86汇编语言程序设计教程

    第一部分是基础部分,以8086/8088为背景,以DOS和PC兼容机为软硬件平台,以MASM和TASM为汇编器,介绍汇编语言的有关概念,讲解汇编语言程序设计技术。第二部分是提高部分,以80386为背景,以新一代微处理器Pentium为...

    nasm PC汇编语言 教程

    1.3.2 汇编语言. . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3.3 指令操作数. . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.4 基本指令. . . . . . . . . . . . . . . . . . . . . . . . . 10 ...

    asm2go:根据本机汇编代码自动生成golang汇编文件

    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 ...

    Visual C++ 2005入门经典--源代码及课后练习答案

    他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工...

    c#学习笔记.txt

    ref :引用传递 out : 7, namespace(名字空间) C#学习笔记(2)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期:2004-07-11 人气:8092 出处: write by cash(天下第...

    美国..现代编译原理C语言描述.高清版

    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 活跃性...

    ASP.NET的网页代码模型及生命周期

    在.aspx页面中,代码隐藏页模型的.aspx页面代码基本上和单文件页模型的代码相同,不同的是在script标记中的单文件页模型的代码默认被放在了同名的.cs文件中,.aspx文件示例代码如下所示。 “C#” AutoEventWireup=...

    C语言程序设计(谭浩强)第三版

    6.1.怎样定义和引用一维数组  6.1.1怎样定义一维数组  6.1.2怎样引用一维数组元素  6.1.3一维数组的初始化  6.1.4一维数组程序举例  6.2.怎样定义和引用二维数组  6.2.1怎样定义二维数组  6.2.2怎样引用二维...

    精易模块[源码] V5.15

    6、修正“文本_加密”返回文本传递给“文本_解密”后长度不正确BUG,改为返回字节集。 7、改善“外部编辑框_取密码框文本”当不是密码输入属性时不做任何处理,感谢易友【@wjt741106】反馈。 8、恢复“文本_加密”与...

    语言程序设计课后习题答案

    C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。 C++语言最重要的特点是...

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    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...

    我的编程感悟(中文PDF)(共37M二分卷)分卷一

    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...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    Visual C++开发经验技巧宝典(第1章)

    0002 使用汇编语言 2 0003 如何使用内联函数 2 0004 如何使用#define自定义宏 3 0005 使用goto语句进行无条件跳转 3 0006 while循环转为for循环 3 0007 do while循环的分析与使用 4 0008 利用条件...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    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 ...

Global site tag (gtag.js) - Google Analytics