日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编原理实验 --计算平均数

發(fā)布時間:2024/10/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编原理实验 --计算平均数 小編覺得挺不錯的,現(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ù)字,然后ax10后再加上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)容還不錯,歡迎將生活随笔推薦給好友。