生活随笔
收集整理的這篇文章主要介紹了
汇编原理实验 --计算平均数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
先不考慮用戶輸入以及輸出,我們可以根據(jù)一些總結(jié)來的經(jīng)驗(yàn)得出:在處理數(shù)組累加,以及求平均值的程序中需要用到循環(huán),把用戶輸入的數(shù)字加起來,然后除以一個總數(shù)得到平均值。
了解了核心算法后,開始需要處理一些匯編細(xì)節(jié),和其他高級語言不同,在匯編語言中用戶輸入的數(shù)字其實(shí)是字符,用ASCII保存的。例如用戶輸入18,實(shí)際上是輸入’1’.’8’,對應(yīng)的ASCII為,31h,38h,如果想要進(jìn)行運(yùn)算,首先要把用戶輸入的’數(shù)字’轉(zhuǎn)化為真正的數(shù)字才行,也就有了我們changeToNum子程序。具體實(shí)現(xiàn)思想比較簡單,用戶輸入一串?dāng)?shù)字后,我們從數(shù)字最高位開始讀,然后把讀出來的存于dx,然后將ASCII轉(zhuǎn)化成數(shù)字只要減去30h即可,存于ax。再讀次高位,用相同方法處理成數(shù)字,然后ax乘10后再加上dx,反復(fù)如此,直到所有讀完。
輸出也是類似的,要把數(shù)字輸出在屏幕上,需要把每位數(shù)字轉(zhuǎn)化成ASCII碼輸出,每次循環(huán)整除以10,余數(shù)就是最低位,直到除到商為0。這就是 dispdec子程序
有了這三大塊功能后,就可以來實(shí)現(xiàn)代碼了:
定義一個sum變量來記錄累加,用戶每輸入一個數(shù)字轉(zhuǎn)化后就加到sum中,輸入完成后sum再除以整數(shù)得平均數(shù)。最后將其輸出
DATAS SEGMENT;此處輸入數(shù)據(jù)段代碼message db 'average is:$'sum dw 0count equ 5 ;數(shù)字個數(shù)num db 3 ;最多兩位數(shù)numlen db ?numfld db 3 dup(?)
DATAS ENDSSTACKS SEGMENT;此處輸入堆棧段代碼
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
START:MOV AX,DATASMOV DS,AX;此處輸入代碼段代碼mov bx,summov cx,count
again:mov ah,0ahlea dx,numint 21hcall printnewlinecall changeToNum ;入口numfld出口參數(shù)為axadd bx,axloop againlea dx,messagecall printmov sum,bxmov ax,summov bx,countDIV bxmov dx ,axcall dispdecMOV AH,4CHINT 21Hprint procpush axmov ah,09hint 21hpop axret
print endp
;輸出換行
printnewline procpush axpush dxmov ah,02hmov dl,0dhint 21hmov dl,0ahint 21hpop dxpop axret
printnewline endp
changeToNum proc
push cx
push dx
push bxmov cl,numlenmov si,0mov ax,0
again1: mov dl,[numfld+si]sub dl,30hinc siadd ax,dxcmp cl,1je last mov bl,10 MUL blloop again1
last:
pop bx
POP dx
pop cxret
changeToNum endp
;十進(jìn)制輸出,入口參數(shù)dx
dispdec procpush axpush bxpush cxpush dxmov ax,dxxor dx,dxmov bx,10mov cx,0
a:cmp ax,10jb okdiv bxadd dl,30hpush dxxor dx,dxinc cxjmp a
ok:add al,30hpush axinc cx
b:pop dxmov ah,2int 21hloop bpop dxpop cxpop bxpop axret
dispdec endp
CODES ENDSEND START
運(yùn)行結(jié)果如圖:
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的汇编原理实验 --计算平均数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。