1

8086に2つの浮動小数点を追加する必要があります

    12.3 ---> 4144 CCCDh
    (AX,BX) = (4144h, CCCDh)

この浮動小数点が次のように見える任意の数を追加する必要があります。

    (AX,BX) = (AX,BX) + 10h

私がそうするなら、その答えは間違っています。

     (AX,BX) + 10h == 4144 CCECh

しかし、23,3は4144CCEChと等しくありませんでした

手伝って頂けますか?この2つの数字を追加するにはどうすればよいですか?

4

2 に答える 2

0

これは確認していませんが (特に bp のオフセット)、ある程度の見通しが得られるはずです。古い8087 浮動小数点命令セットを使用します。

すべての操作は、コプロセッサ スタックおよび/またはメモリ間で発生します。整数は、命令を使用して 2 の補数表現から変換できます。FILD mem場合によっては、(メモリから) 整数を 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
于 2013-01-08T13:43:10.680 に答える
0

そのような IEEE-754 float 値 (12.3f = 0x4144cccd) に整数 (10) を追加することはできません。10 を IEEE-754 形式 (10.0f = 0x41200000) で表現し、浮動小数点加算命令を使用する必要があります。

  0x4144cccd      12.3
+ 0x41200000    + 10.0
  ----------      ----
  0x41B26666      22.3
于 2013-01-08T13:20:56.257 に答える