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

汇编语言数组乘法代码分析(9)

 
阅读更多

 

来自于《Intel汇编语言程序设计》(第四版)第八章,主要用到以下两条指令:

 

STOSB,STOSW和STOSD指令将AL/AX/EAX的内容存储在EDI指向的内存单元中,同时EDI的值将根据方向标志的值增加或减少。

 

LODSB,LODSW和LODSD指令从ESI指向的内存位置向AL/AX/EAX中装入一个值,同时ESI的值根据方向标志值增加或减少。

 

以下为程序源代码,使用了LODSD和STOSD:

 

TITLE Multiply an Array        (Mult.asm)

 

; This program multiplies each element of an array

; of 32-bit integers by  a constant value

 

INCLUDE Irvine32.inc

.data

array DWORD 1,2,3,4,5,6,7,,8,9,10

multiplier DWORD 10

 

.code

main PROC

        cld                                        ; direction = forward

        mov esi, OFFSET array         ; source index

        mov edi,esi                           ; destination index

        mov ecx,LENGTHOF array      ; loop counter

L1:   lodsd                                     ; load [ESI] into EAX

        mul multiplier                        ; multiply by a value

        stosd                                     ; store EAX into [EDI]

        loop L1

        exit

main ENDP

END main

 

 

每次将[ESI]的值赋值给EAX中,然后调用mul指令进行乘法运算,然后结果会保存在EAX中,然后stosd指令将EAX中的值保存到[EDI]中。

 

 

 

 

 

分享到:
评论

相关推荐

    nasm PC汇编语言 教程

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

    JAVA上百实例源码以及开源项目源代码

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    JAVA上百实例源码以及开源项目

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    你必须知道的495个C语言问题

    6.6 既然不能向数组赋值,那这段代码为什么可以呢?intf(charstr[]){if(str[0]=='\0')str="none";…} 6.7 如果你不能给它赋值,那么数组如何能成为左值呢? 回顾 6.8 现实地讲,数组和指针的区别是什么? 6.9...

    《你必须知道的495个C语言问题》

    书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...

    C语言FAQ 常见问题列表

    C 语言常见问题集 原著:Steve Summit 翻译:朱群英, 孙 云 修订版 0.9.4, 2005年6月23日 版权所有 © 2005 * 目录 * 1. 前言 * 2. 声明和初始化 o 2.1 我如何决定使用那种整数类型? o 2.2 64 位机上的 ...

    你必须知道的495个C语言问题(PDF)

    2.4 在C 语言中实现抽象数据类型什么方法最好? . . . . . . . . . . . 7 2.5 在C 中是否有模拟继承等面向对象程序设计特性的好方法? . . . 7 i 目录ii 2.6 我遇到这样声明结构的代码: struct name f int namelen; ...

    IOI国家集训队论文集1999-2019

    张家琳 -《多项式乘法》 张 宁 -《遗传算法的特点及其应用》 张一飞 -《由感性认识到理性认识——透析一类搏弈游戏的解答过程》 周文超 -《树结构在程序设计中的运用》 ## 2003 方 奇 -《染色法和构造法在...

Global site tag (gtag.js) - Google Analytics