基於 8086 組合語言 減奇數法開平方

2021-07-09 14:59:50 字數 2060 閱讀 7351

用減奇數法,可以求近似平方根。

那位大俠能給個匯程式設計序啊,感激不盡!

;****************************************====

最佳答案:

;程式如下:

;-------------------------------------------

data segment

num   dw  12345    ;被開方數:0~65535

mes_i db  ', srqt is : $  ' ;用於提示.

data ends

;-------------------------------------------

code segment

assume  cs:code, ds:data

start:

mov  ax, data

mov  ds, ax

;------------------

mov  ax, num    ;被開方數

call disp_ax    ;顯示

;------------------下面求平方根

mov  bx, -1

mov  cx, -1

lll:

add  bx, 2      ;奇數

inc  cx         ;根加一

sub  ax, bx     ;減奇數

jnb  lll        ;夠減就繼續減

;------------------------------

mov  dx, offset mes_i

mov  ah, 9      ;9號功能呼叫,顯示提示.

int  21h

;------------------

mov  ax, cx     ;平方根

call disp_ax    ;顯示

;------------------

exit:

mov  ah, 4ch    ;結束程式

int  21h

;------------------------------

disp_ax:

push ax

push bx

push cx

push dx

;------------------

mov  bx, 10

mov  cx, 0

dis0:

mov  dx, 0

div  bx

add  dl, 30h

push dx

inc  cx

and  ax, ax

jz   dis1

jmp  dis0

dis1:

mov  ah, 2

pop  dx

int  21h

loop dis1

;------------------

pop  dx

pop  cx

pop  bx

pop  ax

ret;------------------------------

code  ends

end  start

;****************************************====

本程式執行的結果如下:

c:\masm>srqt_1

12345, srqt is : 111

c:\masm>

;****************************************====

回答者: 做而論道 | 十五級 採納率:42% 名人 達人

提問者對回答的評價:謝謝!

原題**:

;****************************************====

後記:提問者已經給出了乙個開方程式,但是能處理資料的僅有 8 位,且不能顯示。

本文給出的顯示程式,稍加修改就按照常用的進製顯示資料。具有相當廣泛的通用性。

;****************************************====

8086組合語言

cmc 進製位求反指令 stc 進製位置為1指令 cld 方向標誌置1指令 std 方向標誌位置1指令 cli 中斷標誌置0指令 sti 中斷標誌置1指令 nop 無操作 hlt 停機 wait 等待 esc 換碼 lock 封鎖 附上 藍色理想 的彙編學習心得位址 從今天開始溫習彙編了 1 基本概...

8086組合語言知識大綱

乙個儲存單元儲存乙個位元組 乙個cpu有n根位址線,則可以說這個cpu的位址匯流排的寬度為n。這樣的cpu最多可以尋找2的n次方個記憶體單元。位址匯流排的寬度決定了cpu的定址能力。資料匯流排的寬度決定了cpu和外界的資料傳送速度。8根資料匯流排一次可以傳送乙個8位二進位制資料 1個位元組 8086...

8086組合語言 LEA指令

格式 lea 暫存器,間接運算元 注意第二運算元只能是間接運算元 data array byte xuyan code mov eax,offset array lea ebx,eax 1 mov ecx,0 mov al,ebx 最後ecx中的值是十進位制117,因為 u 的ascii碼是117d...