我需要添加兩個浮點在8086大會8086:兩個浮點[32位]增加,撒哈拉等
12.3 ---> 4144 CCCDh
(AX,BX) = (4144h, CCCDh)
我需要添加任何數量的這種浮點樣子:
(AX,BX) = (AX,BX) + 10h
如果我這樣做的答案是錯誤的。
(AX,BX) + 10h == 4144 CCECh
但23.3 didnt等於4144 CCECh
你能幫助我嗎?我如何添加這兩個數字?
我需要添加兩個浮點在8086大會8086:兩個浮點[32位]增加,撒哈拉等
12.3 ---> 4144 CCCDh
(AX,BX) = (4144h, CCCDh)
我需要添加任何數量的這種浮點樣子:
(AX,BX) = (AX,BX) + 10h
如果我這樣做的答案是錯誤的。
(AX,BX) + 10h == 4144 CCECh
但23.3 didnt等於4144 CCECh
你能幫助我嗎?我如何添加這兩個數字?
還沒有驗證過這個(尤其是bp的偏移量),但它應該給一些觀點。 它使用古代8087 floating point instruction set。
所有操作發生在協處理器堆棧和/或內存之間。可以使用指令FILD mem
從2的補碼錶示轉換整數,並且在某些情況下,還有一個內置的附加指令,用於將整數(從存儲器)添加到FP寄存器。
push bp
mov bp, sp
push bx
push ax
push word ptr 10 ; // decimal, not hex
fld dword ptr [bp] ; load float (just pushed from bx,ax)
fiadd word ptr [bp-4] ; add the integer in stack
fst dword ptr [bp] ; store result
pop ax
pop ax ; restore the high word of result
pop bx ; restore low word
pop bp ; restore frame pointer
謝謝你的觀點我需要做更多的研究8086 – user1958191
不能像這樣在IEEE-754浮點值(12.3f = 0x4144cccd)上添加整數(10)。您需要以IEEE-754格式(10.0f = 0x41200000)表示10,然後使用浮點加法指令。
0x4144cccd 12.3
+ 0x41200000 + 10.0
---------- ----
0x41B26666 22.3
謝謝,但我如何給這個值在8086註冊可以幫助嗎? – user1958191
如果它真的是一個古老的8086,那麼你需要一個8087協處理器或一個軟件FPU仿真。無論是那個,還是你必須自己編寫一些浮點例程。 –
okey非常感謝你 – user1958191
你真的有8086嗎?如果是這樣,一個8087呢?這會做更好的浮點。無論如何,請向我們展示一些您的代碼。 –
我是新手,我使用emu 8086進行編碼。這是我的測驗問題,我不知道如何添加這兩個數字。 – user1958191