x86

    3熱度

    1回答

    我想抓住FreeBSD中的彙編程序。在handbook's code example for a UNIX filter中,寄存器esp會在每次系統調用後重置。有問題的代碼是: %include 'system.inc' section .data hex db 'ABCDEF' buffer db 0, 0, ' ' section .text global _start _st

    2熱度

    1回答

    這個例子是寫在NASM: section .bss var28: resb 28 section .text _main: ; Initialize finit fldpi ; Read Tag Word fstenv [var28] mov ax, [var28 + 8] ; move t

    0熱度

    1回答

    我想檢查宏命令中是否有參數,如果沒有參數,請不要執行我的宏代碼。在FASM,它看起來像: F MACRO arg1 if ~ arg eq mov ax, arg1 add ax,ax add ax, 5 end if ENDM 但組裝此代碼返回一個錯誤: (19) illegal instruction: if ~ arg eq or wrong parameters. 我如何重

    10熱度

    1回答

    我寫了這個代碼在NASM: PADDD mm0, mm1 ,這是組裝沒有錯誤,但該指令,但它在NASM存在,我無法在英特爾的說明手冊發現,所有我發現是這樣的: PADDD xmm1, xmm2/m128 這需要一個xmm寄存器,而不是mm寄存器。 這是PADDD mm0, mm1操作碼:0FFEC1 這是PADDD xmm0, xmm1操作碼:660FFEC1 那麼,爲什麼PADDD mm

    1熱度

    2回答

    假設我有一個時間戳記計數器。 static uint32_t _Atomic timestamp = 0U; static inline uint32_t get_ts(void) { return atomic_fetch_add_explicit(×tamp, 1, memory_order_acquire); } 假設我有一些併發代碼,我想通過實驗測試和記錄內

    4熱度

    2回答

    我無法理解什麼是彙編的以下行做: 0x401810: repz cmps BYTE PTR ds:[rsi],BYTE PTR es:[rdi] 0x401812: seta dl 0x401815: setb al 調試後,我明白,第一個指令比較寄存器rsi和rdi,逐字節的字節數。 然後根據該指令設置rdx和rax的低位字節。 我的疑惑是,當我在線查閱這個指令時,它說seta如果它的上

    -2熱度

    2回答

    爲什麼我的彙編代碼跳過一行?它讓跳過線mov AX,A org 100h count equ 2 A DW 5 B DW 6 Y0 DW ? Y1 DW ? mov AX,A add AX,B sub AX,count mov Y0,AX mov BX,B neg BX add BX,count mov Y1,BX ret

    1熱度

    1回答

    我目前正在研究x86彙編語言,遵循Kip Irvine的彙編語言書。 在這本書中,作者指出: 3.4.4定義字節爲sbyte數據 字節(定義字節),併爲sbyte(定義符號字節)指令的一個或多個存儲分配 無符號或有符號的值。每個初始化器必須裝入存儲器的8位。 我只是想知道,如果我不小心分配了一個過大的存儲區域值?我應該期待什麼樣的行爲? 由於我缺乏經驗,我無法想出一個演示行爲的例子,所以如果任何人

    1熱度

    1回答

    我試圖將數組複製到另一個數組,但元素的順序應該顛倒並顯示。我的程序文件編譯但不運行,並且每次都會導致Windows停止錯誤(Windows對話框)。 我不知道我在做什麼錯。請指教。 INCLUDE Irvine32.inc .data sarray DWORD 500h, 400h, 300h, 200h, 100h darray DWORD 5 DUP(?) .code main

    0熱度

    1回答

    我有數據段 dataseg segment para 'data' var1 db 3 var2 db 5 dataseg ends 我試圖移動值,即 mov ax, offset var2 mov bx, [ax] 但它不工作