Обсуждение Руководства по ассемблеру MASM для архитектуры Intel x86-64

Тема в разделе "MASM", создана пользователем Dmitry_Milk, 29 окт 2026 в 17:55.

  1. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    606
    Чегой-то? Оно обозначает, что из памяти по адресу, где лежит переменная num, будет взято 4 байта, независимо от того, каого размера был определен num. То есть, если num там определялся как 8-битное значение (db/byte), то это вовсе незначит, что значение будет расширено до 4 байт нулями или знаковым битом, а лишь значит, что num будет взят с последующими тремя мусорными байтами.
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    4.364
    Dmitry_Milk,
    пожалуйста, дождитесь окончания статьи, найденные ошибки и опечатки публикуйте в этом топике. Заранее, спасибо! :yes3:
     
    Последнее редактирование: 30 окт 2026 в 02:57
  3. MaKsIm

    MaKsIm Active Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    224
    https://wasm.in/threads/rukovodstvo...tektury-intel-x86-64.36832/page-2#post-451483
    Если это руководство для новичков, тогда стоит заменить команду mov [rbx + 4], rdx на mov [rbx + 4], edx, чтобы не путать читателя несоответствием длин регистра и переменной.
     
    Mikl___ нравится это.
  4. R81...

    R81... Active Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    197
    Ну а комментарий-то? ; в память по адресу [RBX + 4] , т.е. в n2 помещаем значение из eDx.
    И к тому же, по моему мнению при Mov [RBX+4], RDX обнулится DW [RBX + 8] - что вообще некорректно.
    P.S. Если что я еще не дошел до x64.
    --- Сообщение объединено, 30 окт 2026 в 23:03 ---
    Да не "выгрести" все ошибки из статьи, если все откладывать.

    Код (ASM):
    .data
    ptrToSum qword offset sum ; указатель содержит адрес процедуры sum
    .code
    sum proc
    mov rax, rcx
    add rax, rdx
    ret
    sum endp
    main proc
    mov rcx, 22
    mov rdx, 25
    ;call ptrToSum ; ошибка ? если MASM-64 не безумно умный
    call [ptrToSum] ; вызываем процедуру через указатель
    ret
    main endp
    end

    Код (ASM):
    lea rax, sum
    mov ptrToSum, rax

    Ну раз уж выше указано на offset, то как альтернативный вариант?
    Код (ASM):
    mov ptrToSum, offset sum
     
    Последнее редактирование: 30 окт 2026 в 21:36