彙編實現兩位數相加

2021-07-08 10:34:13 字數 2884 閱讀 9804

本來簡單的兩個數相加用高階語言只是兩行**的問題,但是到了組合語言,就需要什麼考慮了,比如先定義資料段 還有**段,有的時候還需要定義堆疊段

eg:先定義資料段:

datas segment

data1 db 255 dup('$') ;定義了乙個變數名為data1 長度為255個字 的字串

data2 db 255 dup('$') ; 同上

str1 db 'please input first number: $ ' ;定義字 準備要輸出的字串先定義好

str2 db 'please input second number: $ ' ;同上

str3 db 255 dup('$')

kong db 0dh,0ah ,'$'

datas ends

定義堆疊

stack segment

stac db 255 dup(?) ;定義了乙個名為stac的堆疊

stack ends

在每個定義的段之後還要加

assume ds:datas,cs:codes

這樣說明只是定義了  資料段 和**段

這樣還要有字串的簡單輸入和輸出

data segment

str1 db 255 dup('$')

str2 db 0dh,0ah,'$' ; 0ah是換行

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

lea dx,str1

mov ah,0ah

int 21h

lea dx,str2

mov ah,09h

int 21h

lea dx,[str1+2]

;add dl,48

;add dl,30h

mov ah,09h

int 21h

mov ah,4ch

int 21h

code ends

end start

下面就是整個兩位數相加的**

datas segment

data1 db 255 dup('$') ;定義了乙個變數名為data1 長度為255個字 的字串

data2 db 255 dup('$') ; 同上

str1 db 'please input first number: $ ' ;定義字 準備要輸出的字串先定義好

str2 db 'please input second number: $ ' ;同上

str3 db 255 dup('$')

kong db 0dh,0ah ,'$'

datas ends

stack segment

stac db 255 dup(?) ;定義了乙個名為stac的堆疊

stack ends

codes segment

assume ds:datas,cs:codes

start:

mov ax, datas

mov ds, ax

lea dx,str1

mov ah,09h

int 21h

;輸入第乙個兩位數

lea dx,data1

mov ah,0ah

int 21h

;輸換行

lea dx,kong

mov ah,09h

int 21h

;儲存data1的個位和十位

mov bl, [data1+2];十位

sub bl,'0'

mov bh, [data1+3];個位

sub bh,'0'

lea dx,str1

mov ah,09h

int 21h

;輸入第二個兩位數

lea dx,data2

mov ah,0ah

int 21h

;輸換行

lea dx,kong

mov ah,09h

int 21h

;儲存兩位數的個位和十位

mov cl,[data2+2]

sub cl,'0'

mov ch,[data2+3]

sub ch,'0'

;開始相加

add bl,cl

add bh,ch

cmp bh,10

jge single_adding

tens_adding:

cmp bl,10

jge input_num

jmp input_num2

single_adding:

sub bh,10

add bl,1

jmp tens_adding

input_num:

sub bl,10

mov dl,1

add dl,30h

mov ah,02h

int 21h

jge input_num2

input_num2:

mov dl,bl

add dl,30h

mov ah,02h

int 21h

mov dl,bh

add dl,30h

mov ah,02h

int 21h

mov ah,4ch

int 21h

codes ends

end start

兩位數乘法

option base 1 private sub command1 click dim m as string dim n as string m trim text1.text n trim text2.text dim number1 as byte dim number2 as byte r...

組合語言兩位數的乘法

本人比較菜,第一次在csdn上寫部落格,怕學過的東西忘記就寫下了這篇關於彙編巨集的使用的部落格,以後還能找到。具體題目如下 定義巨集,完成兩個運算元相乘,乘積在第3個運算元中。並寫乙個簡單的程式呼叫這個巨集,完成2個從鍵盤輸入資料的相乘及結果輸出。如下 datas segment 此處輸入資料段 x...

兩位數的乘法

private sub command1 click dim n as integer dim m as integer n trim text1.text m trim text2.text dim number1 as integer dim number2 as integer redim n...