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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/10/14 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编原理实验 --计算平均数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先不考慮用戶輸入以及輸出,我們可以根據一些總結來的經驗得出:在處理數組累加,以及求平均值的程序中需要用到循環,把用戶輸入的數字加起來,然后除以一個總數得到平均值。

了解了核心算法后,開始需要處理一些匯編細節,和其他高級語言不同,在匯編語言中用戶輸入的數字其實是字符,用ASCII保存的。例如用戶輸入18,實際上是輸入’1’.’8’,對應的ASCII,31h,38h,如果想要進行運算,首先要把用戶輸入的’數字’轉化為真正的數字才行,也就有了我們changeToNum子程序。具體實現思想比較簡單,用戶輸入一串數字后,我們從數字最高位開始讀,然后把讀出來的存于dx,然后將ASCII轉化成數字只要減去30h即可,存于ax。再讀次高位,用相同方法處理成數字,然后ax10后再加上dx,反復如此,直到所有讀完。

輸出也是類似的,要把數字輸出在屏幕上,需要把每位數字轉化成ASCII碼輸出,每次循環整除以10,余數就是最低位,直到除到商為0。這就是 dispdec子程序

有了這三大塊功能后,就可以來實現代碼了:

定義一個sum變量來記錄累加,用戶每輸入一個數字轉化后就加到sum中,輸入完成后sum再除以整數得平均數。最后將其輸出


DATAS SEGMENT;此處輸入數據段代碼message db 'average is:$'sum dw 0count equ 5 ;數字個數num db 3 ;最多兩位數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出口參數為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 ;十進制輸出,入口參數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

運行結果如圖:


與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的汇编原理实验 --计算平均数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。