首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >汇编语言x86 Irvine

汇编语言x86 Irvine
EN

Stack Overflow用户
提问于 2016-02-26 18:26:03
回答 1查看 294关注 0票数 0

我有两项任务:

  • 打印ar2长度
  • 将元素从ar1移动到ar2,将每个项递增1

我需要汇编语言x86 Irvine32的帮助。我必须做上述两件事。我得到了第一个正确的,但我有点迷失在第二个。你是怎么做到的?到目前为止,我的情况如下:

代码语言:javascript
复制
INCLUDE Irvine32.inc

.data

ar1 WORD 1,2,3
ar2 DWORD 3 DUP(?)

.code
main PROC

    mov eax, 0
    mov eax, LENGTHOF ar2

    mov bx, ar1
    mov ebx, ar2
    inc ebx
    call DumpRegs
    exit
main ENDP
END main
EN

回答 1

Stack Overflow用户

发布于 2016-02-26 19:22:36

您只需从第一个数组中读取单词(每个条目的大小为2),并将它们复制到包含DWORD的第二个数组中(每个项的大小为4):

主要程序

代码语言:javascript
复制
  mov ecx, LENGTHOF ar2         ; ECX should result in '3'
  lea esi, ar1                  ; source array       - load effective address of ar1
  lea edi, ar2                  ; destination array  - load effective address of ar2
loopECX:
  movzx eax, word ptr [esi]     ; copies a 16 bit memory location to a 32 bit register extended with zeroes
  inc eax                       ; increases that reg by one
  mov dword ptr [edi], eax      ; copy the result to a 4 byte memory location
  add esi, 2                    ; increases WORD array  'ar1' by item size 2 
  add edi, 4                    ; increases DWORD array 'ar2' by item size 4
  dec ecx                       ; decreases item count(ECX)
  jnz loopECX                   ; if item count(ECX) equals zero, pass through
                                ; and ...
  call DumpRegs                 ; ... DumpRegs
  exit
main ENDP
END main
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35659043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档