ia-32

    0熱度

    1回答

    我把一個簡單的c程序翻譯成IA32,然後將它轉譯成Y86,但是我收到一個錯誤,我不明白或知道如何調試,因爲我只是學習Y86。錯誤是: Stopped in 1 steps at PC = 0x1. Exception 'HLT', CC Z=1 S=0 O=0 Changes to registers: Changes to memory: 的程序是應該初始化i到0,然後通過繼續進行循環

    0熱度

    2回答

    Im做一些功課和困惑回覆:這行代碼: ja 8048448 <switch_prob+0x28> 我理解除了一部分一切......這怎麼修改跳轉到8048448? (我相信這是突破聲明) 讓我知道是否需要更多的代碼。 感謝

    0熱度

    1回答

    有誰知道什麼是錯誤的解決方案在這裏: func PROC x:sdword, y:sdword LOCAL tmp: sdword ... func ENDP A. mov tmp, y B. mov eax, y C. mov tmp, ecx D. lea eax, tmp 我可以使用所有這些說明嗎?或者它們中有哪些是無效的? 誠摯的問候,並感謝您

    1熱度

    2回答

    我正在嘗試寫一個引導加載程序,並且我正在編寫的所有代碼都以實模式運行。在所有的例子中,我發現有一個xor ax, ax或xor eax, eax,我不明白這是做什麼。這似乎與設置段寄存器有關,但我不清楚是什麼。

    0熱度

    1回答

    我正在使用assebmly IA32,由於沒有經驗,我對此有些懷疑。 我想做這樣的事情: A + B(均爲32位)。 該函數可以返回64位的值。 請不要讓我很難理解這一點。 謝謝!!!!

    1熱度

    2回答

    將這個C代碼翻譯成程序集時,只有一件小事情被卡住了。這是我堅持的代碼行。 if (input == '\n') 我的彙編代碼迄今(此行)是 movl input, %eax #%eax = input cmpl ___, %eax 如何比較輸入到 '\ n'?我是直接比較它還是首先將它移入內存?謝謝。

    0熱度

    4回答

    我開始了我在彙編程序,我正在做一些算法和通用寄存器的數量是不夠的,這 有什麼辦法在asm中使用特殊寄存器(eip,eflags)作爲通用寄存器? 我只需要它們進行少量操作,但所有通用寄存器都已佔用,我不喜歡將值存儲在內存中,這會降低算法的性能。 可能嗎?

    1熱度

    1回答

    我想測試一下硬件是如何運行的,以防我試圖寫入段(例如DS以外的數據段可能是GS),僅用於測試目的......是否有程序集指令,允許我指定段wit.h一個偏移量並直接寫入它?

    0熱度

    1回答

    我想知道機器代碼00是什麼意思?另外,我有時會在程序中看到機器代碼08。 08是什麼意思? 08048413 <main>: 8048413: 55 push %ebp #save frame pointer 8048414: 89 e5 mov %esp,%ebp #create new frame pointer 8048416: 83 e4 f

    -1熱度

    2回答

    我不想讓你做我的功課。我只想提供一些關於如何做的提示,以便我可以自己學習。 給定的是一個從最低位到最高位寫入的字節地址內存。然後,我有它具有以下聲明一個C程序: long int i = 1; char c = 'x'; short int n = 10; short in m = 11; float f = 0.0; 在IA32 int是4個字節,char是1個字節,短是2字節,並且