首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地在程序集中写入字节数组?

如何正确地在程序集中写入字节数组?
EN

Stack Overflow用户
提问于 2014-10-19 21:48:28
回答 1查看 558关注 0票数 3

我需要编写一个字节数组,但我没有得到它,只编写了[matrix + 0][matrix + 1] (我的意思是,EAX应该等于0301070F),我做错了什么?

这是我的密码:

代码语言:javascript
复制
%include "asm_io.inc"
segment .data
    matrix times 4 db 0

segment .bss

segment .text

  global asm_main

asm_main:
    enter 0,0
    pusha
    mov eax, 0

    mov dword [matrix + 3], 15
    mov dword [matrix], 3
    mov dword [matrix + 1], 1
    mov dword [matrix + 2], 7

    mov ah, [matrix]
    mov al, [matrix + 1]
    rol eax, 16
    mov ah, [matrix + 2]
    mov al, [matrix + 3]

    dump_regs 1

  popa
  mov eax, 0
  leave
  ret

这是dump_regs 1的输出

代码语言:javascript
复制
Register Dump # 1
EAX = 03010000 EBX = B774FFF4 ECX = BFF7C924 EDX = BFF7C8B4
ESI = 00000000 EDI = 00000000 EBP = BFF7C868 ESP = BFF7C848
EIP = 080484D8 FLAGS = 0282       SF   

调用者是一个简单的C程序:

代码语言:javascript
复制
int main() {
  int ret_status;
  ret_status = asm_main();
  return ret_status;
}

编辑:我在这里发现了一些错误,如果我执行这段代码,一切都在工作:

代码语言:javascript
复制
    mov dword [matrix], 3
    mov dword [matrix + 1], 1
    mov dword [matrix + 2], 7
    mov dword [matrix + 3], 15

但是如果我执行这个,就不起作用了:

代码语言:javascript
复制
    mov dword [matrix + 3], 15
    mov dword [matrix], 3
    mov dword [matrix + 1], 1
    mov dword [matrix + 2], 7

为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-19 22:18:44

已经有一段时间了,但不应该

代码语言:javascript
复制
  mov dword [matrix], 3

宁愿像这样

代码语言:javascript
复制
  mov byte [matrix], 3

为了避免将常量3作为32位值处理?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26455773

复制
相关文章

相似问题

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