汇编语言数组乘法代码分析(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]中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值