Почему мой код NASM печатает большое значение при печати байтовой переменной db как int? ⇐ Linux

Anonymous
Почему мой код NASM печатает большое значение при печати байтовой переменной db как int?

Сообщение Anonymous »

Я пишу код в nasm и не понимаю, что происходит. Дистрибутив Linux представляет собой 64-битную версию Ubuntu 16, но NASM работает в 32-битной версии.
Ожидаемый результат --> «Число: 2»
Фактический результат --> «номер: 134520868»
Код:

Код: Выделить всё

%include "io.inc"

section .data
n1 db 2 ; i know it's a bad practice to define a db variable, it's just for a test
msg: db 'number is: %d',10,0

section .text
extern printf
global main

main:
push ebp
mov ebp, esp

push dword n1
push msg
call printf

mov esp, ebp
pop ebp
ret
Я пытался определить n1 с помощью dd или отправить содержимое n1, даже с помощью такого регистра, как eax.
Обновление, даже когда я нажимаю dword [n1], единственное, что меняется, это то, что теперь на выходе отображается «Число: 1836404226»...

Подробнее здесь: https://stackoverflow.com/questions/790 ... able-as-an

Вернуться в «Linux»