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