assembly

    1熱度

    1回答

    我想解決我得到的練習。任務是從終端讀取10個整數並以相反的順序打印出來。要做到這一點,應該使用堆棧。我已經試過這樣: %include "asm_io.inc" segment .data prompt db "Please enter a number: ", 0 segment .text global asm_main asm_main: enter 0,

    -1熱度

    1回答

    我是新來的彙編,並試圖迭代存儲在內存中的字符串。我可以使用lea(加載有效地址)指令得到字符串的地址,但我現在想使用存儲在寄存器中的那個地址。 有模lw其可以使用如下: lea string, %edx ; Load effective address of string into edx lw %edx, %eax ; Load eax with the value stored wher

    4熱度

    1回答

    我被困在家庭作業上;我需要將二進制浮點數轉換爲小數點。我覺得我理解這個過程,但我沒有得到正確的答案。這是我的思考過程。 我有二進制浮動:0 000 101 對於3位指數字段偏置爲3:2^(3-1)-1 = 3 尾數變得1.101(基數爲2) 指數位的值,0,減去指數位數3,爲-3,所以尾數的小數點左移3位 0.001101 以10爲底,即2^-3 + 2^-4 + 2^-6,等於0.203125或

    2熱度

    1回答

    我正在學習與MASM64的x64程序集。我已經讀過,前4個參數通過寄存器傳遞給過程:RCX,RDX,R9和R8。如果有更多的參數,我們通過堆棧傳遞它們。 但有一些令人困惑。 爲什麼這個代碼不工作: sub rsp, 40h push 0 push FILE_ATTRIBUTE_NORMAL push CREATE_ALWAYS xor r8, r8 xor r9, r9 mov rdx

    0熱度

    1回答

    我在寫一個內聯彙編代碼來讀取實時時鐘。我正在加載寄存器編號(4)以讀取到'dl'並將其加載到端口0x70。我正在嘗試將這個寄存器值(4)讀入al。欲瞭解更多信息 - RTC asm( "mov $4, %%dl;" "out 0x70, %%dl;" "in %%al, 0x71;" : : :"%al","%dl" ); 我正在上編譯包含該代碼的C文件下面的錯誤消息。 Assem

    1熱度

    1回答

    當我們有這樣的代碼: main: MOV #SFE(CSTACK), SP ; set up stack ;;; some instructions ....... ; load the starting address of the array1 into the register R4 MOV.W #arr1, R4 ; load the st

    4熱度

    1回答

    我們知道C++使用vftable來動態地決定應該調用哪個虛函數。當我們調用虛函數時,我想找出它背後的機制。我編譯了下面的代碼進行彙編。 using namespace std; class Animal { int age; public: virtual void speak() {} virtual void wash() {} }; class Ca

    3熱度

    2回答

    我想寫一個包含大型列表(大約4.8k字節)的程序。代碼在彙編中,但具有更大的數據表(大約5.4k字節)。

    1熱度

    2回答

    我正在爲stm32l152C-discovery板執行arm cortex-m3的C代碼,但是我發現main函數調用沒有被推入堆棧。我已經分析了這個源的asm代碼,但是我發現它是可以的。爲了更好的理解,請看這裏的C代碼生成的彙編代碼: main.elf: file format elf32-littlearm *SYMBOL TABLE: 00000010 l d .text 000000

    3熱度

    1回答

    當您使用內存覆蓋前綴但所有操作數都是寄存器時會發生什麼? 因此,假設您的代碼爲mov eax, ebx或add eax, ebx,默認值爲32位,但您使用67h覆蓋。 處理器如何處理這種情況?