上次寫到可輸入的兩位數相加,這次,為了讓運算更加靈活,可以進行加減運算。思路就是讀取數字,當數字中斷時判斷符號為加號還是減號。再繼續讀取,然後運算時與兩位數相加通過原理。減時用sub一下即可。
datas segment
op1 dw 0
op2 dw 0
operator db ?
result db 10 dup (?)
bufsize db 25
actchar db ?
chartext db 26 dup ('$')
datas ends
stacks segment
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax,datas
mov ds,ax
mov dx,offset bufsize
mov ah,0ah
int 21h
mov si,offset chartext
ss1:mov cl,[si]
cmp cl,30h
jb getcode ;跳轉到ss6,此步為運算符號
cmp cl,39h
ja getcode
sub cl,30h
cbwmov ax,op1
mov bx,10
mul bx
add ax,cx
mov op1,ax
inc si
jmp ss1
getcode:mov bl,[si] ;把運算符號賦給bl
mov operator,bl
jmp ss2
ss2:
inc si
mov cl,[si]
cmp cl,30h
jb ss6
cmp cl,39h
ja ss6 ;跳轉到ss6,讀取接下來的數字
sub cl,30h
cbwmov ax,op2
mov bx,10
mul bx
add ax,cx
mov op2,ax
jmp ss2
ss6:
cmp operator,2dh
jz openjian ;若為減號,跳轉到jian
jnz openjia ;若為加號,跳轉到jia
openjian: call jian
jmp ss11 ;正常退出
openjia: call jia
jmp ss11 ;正常退出
jia proc
ss3:
mov dl,10
mov ah,2
int 21h
mov ax,op1
add ax,op2
mov bx,0
mov cl,10
ss4:div cl
add ah,30h
mov si, offset result
mov [si+bx],ah
inc bx
cbw
cmp al,0
jnz ss4
ss5:dec bx
mov dl,[si+bx]
mov ah,2
int 21h
cmp bx,0
jnz ss5
retjia endp
jian proc
ss7:
mov dl,10
mov ah,2
int 21h
mov ax,op1
sub ax,op2
mov bx,0
mov cl,10
ss8:div cl
add ah,30h
mov si, offset result
mov [si+bx],ah
inc bx
cbw
cmp al,0
jnz ss8
ss9:dec bx
mov dl,[si+bx]
mov ah,2
int 21h
cmp bx,0
jnz ss9
retjian endp
ss11: mov ah,4ch
int 21h
codes ends
end start
其實入門就入到這裡而已,接下來的是與硬體結合的東西,個人不是太有興趣,還是專心學自己的東西,不過,這門東西還是有用,至少讓你知道很原始的東西,所以剛開始感覺很難寫。因為底層,所以黑客和大牛們都是用這個,這個可以有。
WEB 除錯二則
1 有天在頁面上寫了乙個提交頁面的script函式,結果死活不能提交頁面,鬱悶了很久,第二天偶爾和同事看的時候,發現原來有個按鈕的名字叫做submit 和form.submit 重複 於是就不停的提示說,沒有相應的屬性。鬱悶啊鬱悶,低階錯誤!2 中文提交的老問題 發現在url中的中文無法正常提交,頁...
ajax問題二則
今天做乙個 的時候,在使用者登入的時候嘗試了使用ajax的post非同步傳遞方式來驗證使用者 之前只研究過get傳遞方式的,都沒弄過post的 這次趁這個機會嘗試了下post,找了點資料,發現都沒什麼難度,跟get區別不是很大 其實我還是乙個ajax新手。這是真的,因為我對ajax的研究非常少。這裡...
Windows XP搜尋技巧二則
1 讓windows xp的搜尋結果更精準 windows xp預設不會搜尋某些目錄中的檔案,且其對檔案內搜尋的支援也不是很完善,我們可以以下方法讓搜尋的結果更為全面 執行 regedit 命令開啟登錄檔編輯器,定位到 hkey current user software microsoft win...