Почему мой код 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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