二進位製雙精度加法運算

2021-10-24 19:57:16 字數 1517 閱讀 6633

本實驗要求計算 x+y=z,將結果 z 輸出到螢幕,其中 x=001565a0h,y=0021b79eh。

z=00371d3e

實驗利用累加器 ax,先求低十六位和,並存入低址儲存單元,後求高 16位和,再存入高址儲存單元。由於低位和可能向高位有進製,因而高位字相加語句需用 adc 指令,則低位相加有進製時,cf=1,高位字相加時,同時加上 cf中的 1。

在 80386 以上微機中可以直接使用 32 位暫存器和 32 位加法指令完成本實驗的功能。

data	segment

mes db 'the result is:$'

xl dw 65a0h

xh dw 0015h

yl dw 0b79eh

yh dw 0021h

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov dx,offset mes ;顯示資訊

mov ah,

09h int 21h

mov ax,xl

add ax,yl ;y低位數值與x低位數值相加

mov bx,ax ;bx中存放結果的低16位

mov ax,xh

adc ax,yh ;y高位數值與x高位數值相加

mov cx,ax ;cx中存放結果的高16位

mov dh,ch ;顯示結果

call show

mov dh,cl

call show

mov dh,bh

call show

mov dh,bl

call show

mov ax,

4c00h

int 21h

show proc near

push dx

push ax

mov al,dh

and al,

0f0h ;取高4位

shr al,

4 cmp al,

0ah ;是否是a以上的數

jb c2

add al,

07hc2: add al,

30h mov dl,al ;show character

mov ah,

02h int 21h

mov al,dh

and al,

0fh ;取低4位

cmp al,

0ah jb c3

add al,

07hc3: add al,

30h mov dl,al ;show character

mov ah,

02h int 21h

pop ax

pop dx

retshow endp

code ends

end start

二進位制加法運算

兩個二進位制整數相加時,是位對位處理的,從最低的一對位 右邊 開始,依序將每一對位進行加法運算。兩個二進位制數字相加,有四種結果,如下所示 0 0 0 0 1 1 1 0 1 1 1 10 1 與 1 相加的結果是二進位制的 10 等於十進位制的 2 多出來的數字向更高位產生乙個進製。如下圖所示,兩...

二進位制加法運算

兩個二進位制整數相加時,是位對位處理的,從最低的一對位 右邊 開始,依序將每一對位進行加法運算。兩個二進位制數字相加,有四種結果,如下所示 0 0 0 0 1 1 1 0 1 1 1 10 1 與 1 相加的結果是二進位制的 10 等於十進位制的 2 多出來的數字向更高位產生乙個進製。如下圖所示,兩...

二進位製雙精度加法匯程式設計序

計算x y z x 001565a0h,y 0021b79eh,運算的結果z 00371d3eh。data segment mes db the result is xl dw 65a0h xh dw 0015h yl dw 0b79eh yh dw 0021h data ends code seg...