中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

匯編語言怎么實現簡單數學運算

發布時間:2021-11-29 09:29:50 來源:億速云 閱讀:424 作者:iii 欄目:開發技術

這篇文章主要介紹“匯編語言怎么實現簡單數學運算”,在日常操作中,相信很多人在匯編語言怎么實現簡單數學運算問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”匯編語言怎么實現簡單數學運算”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

5.計算S=1+2×3+3×4+4×5+···+N(N+1)

5.1設計要求:

設計程序,實現數學公式S=1+2×3+3×4+4×5+···+N(N+1)的算法。數值N由加鍵盤輸入,計算結果在顯示終端輸出。設計要求:計算結果不超過十六位寄存器的存儲能力,如有溢出提示錯誤。

5.2設計思路:

輸入N值然后把N給BH作為循環次數,通過循環實現乘和累加計算,結果為十六進制,通過除以10得到十進制,存入堆棧再依次輸出。

匯編語言怎么實現簡單數學運算

5.3程序清單:

DATA SEGMENT
     pkey   DB  0dh,0ah,"pleas input N end by ';' :$"
     over   DB  0AH,0DH,"overflow!",0dh,0ah,'$'
     result  DB  0dh,0ah,'result is:','$'
     DAT1  DB  8 DUP(0)
DATA ENDS

STACK SEGMENT
    SSTACK DB 100 DUP(0)
STACK ENDS 

CODE SEGMENT
     ASSUME CS:CODE,DS:DATA,SS:STACK 
     
STATE:  
    MOV AX,DATA
    MOV DS,AX
    LEA SI,DAT1     ;開辟緩沖區
    LEA DX,pkey
    MOV AH,9
    INT 21H         ;DOS功能調用,輸出字符串
    
LLP:MOV AH,1
    INT 21H         ;DOS功能調用,輸入N值
    SUB AL,2FH      
    INC DX          ;DX計數
    MOV [SI],AL     ;將輸入的數據存在SI緩沖區
    INC SI
    CMP AL,0CH      ;輸入為封號結束輸入
    JNZ LLP
    SUB SI,2
    CMP DX,02H      ;DX不為2表示輸入為兩位數
    JNZ LLLP 

LLP1:MOV CX,1
     MOV BL,2       ;賦初始值    
     JMP LP
LLLP:
     MOV DI,SI
     SUB DI,1          
     SUB [DI],1
     MOV AL,10
     MUL [DI]
     ADD [SI],AX     ;輸入是兩位數時十位乘10加個位
     SUB AH,AH
     JMP LLP1
     
LP: MOV BH,[SI]      ;把循環次數給BH
    MOV AL,BL
    INC BL
    MUL BL           ;BL(加1)和AL(原值)相乘給AX
    ADD CX,AX        ;AX和CX相加給CX,通過循環實現累加
    JO  OOF         ;如果溢出重新輸入
    CMP BH,BL        ;判斷是否達到N值
    JNZ LP 
    MOV AX,CX
    MOV CX,0AH
    MOV BX,0                 
              
    
LOP:MOV DX,0
    DIV CX         ;AX表示的32位數除以10,商放在AX,余數放在DX
    INC BX
    ADD DX,30H
    PUSH DX           ;將余數依次壓入棧
    CMP AX,0
    JNZ LOP           ;商不為0繼續除10
    LEA DX,result
    MOV AH,9
    INT 21H           ;DOS功能調用,輸出字符串  
    
OUTPUT:
     POP DX
     MOV AH,2
     INT 21H          ;DX中數據依次出棧并顯示
     DEC BX
     JNZ OUTPUT       ;出棧完成后停止
     JMP STATE            
     
OOF:LEA DX,over
    MOV AH,09H
    INT 21H           ;DOS功能調用,溢出顯示
    JMP STATE 
          
CODE ENDS

END STATE

5.4程序運行結果及分析:

乘法和累加計算根據流程圖一步步賦值即可得到,在輸入兩位數和結果轉十進制輸出時遇到了麻煩,通過查找資料不斷嘗試,最終找到了簡單的解決辦法,即輸入兩位時移位累加,輸出除以10存入堆棧并依次輸出顯示。

匯編語言怎么實現簡單數學運算

圖5 計算S=1+2×3+3×4+4×5+···+N(N+1)設計結果

6.計算N!

6.1設計要求:

掌握匯編語言實現高級語言中數學函數的方法。設計程序,實現數學公式N!=N(N-1)(N-2)······2*1的算法。數值N由鍵盤輸入,計算結果在顯示終端輸出。設計要求:N的范圍為0-65535,即不超出16位寄存器的存儲容量。

6.2設計思路:

輸入N值,通過循環實現階乘并將計算結果存入AX,然后十六進制轉十進制輸出。

匯編語言怎么實現簡單數學運算

6.3程序清單:

DATA SEGMENT 
    pkey   DB  0AH,0DH,"Please Input N(1-8):",'$'  
    result DB  0AH,0DH,"the results is:",'$' 
    over   DB  0AH,0DH,"overflow!",0AH,0DH,'$'
DATA ENDS           

STACK SEGMENT
    SSTACK DB 100 DUP(0)
STACK ENDS          

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA,SS:STACK
    
STATE: 
       MOV AX,DATA
       MOV DS,AX   ;數據段初始化

       LEA DX,pkey
       MOV AH,09H
       INT 21H       ;DOS功能調用,顯示字符串  
       
       MOV AH,1      
       INT 21H       ;DOS功能調用,輸入N 
       SUB AL,30H
       CMP AL,08H
       JA  OOF       ;輸入大于8溢出 
       
       XOR AH,AH   
       MOV BP,AX     ;賦循環計數值N給BP  
       
LP:    MOV BX,BP
       DEC BX
       JZ  LLP       ;階乘次數為BX,BX為0必須馬上跳轉
       MUL BX        ;AX中存放階乘結果(十六進制轉十進制用)
       DEC BP
       JNZ LP 

LLP:   MOV CX,0
       MOV BX,10
       
LLLP:  MOV DX,0     
       DIV BX        ;AX表示的32位數除以10,商放在AX,余數放在DX 
       ADD DX,30H    
       PUSH DX       ;將余數轉換為ASCII碼值并壓入棧
       INC CX
       CMP AX,0      ;商不為0就繼續除10
       JNZ LLLP 

       MOV AH,09H
       LEA DX,result 
       INT 21H       ;DOS功能調用,輸出字符串
       
LOP:   POP DX           
       MOV AH,2                                     
       INT 21H       ;DX各位出棧并顯示
       LOOP LOP     
       JMP STATE   

OOF:   LEA DX,over
       MOV AH,09H
       INT 21H      ;DOS功能調用,溢出顯示
       JMP STATE 
   
CODE ENDS
     END STATE

6.4程序運行結果及分析:

階乘部分是利用MUL指令AX中存放計算結果并實現階乘,除階乘計算部分外,其它部分和第五題類似,同樣結果轉十進制輸出時遇到了麻煩,利用除以10存入堆棧再依次取出并顯示來實現。

匯編語言怎么實現簡單數學運算

圖6 計算N!設計結果

到此,關于“匯編語言怎么實現簡單數學運算”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汕尾市| 莒南县| 南宫市| 昌江| 赤峰市| 龙南县| 清流县| 招远市| 新邵县| 莱芜市| 博客| 中卫市| 玛纳斯县| 定襄县| 西乌| 方城县| 遵化市| 时尚| 肥城市| 青海省| 秭归县| 永川市| 丰宁| 盐山县| 竹溪县| 陆丰市| 简阳市| 容城县| 永清县| 乡宁县| 平定县| 庄浪县| 融水| 日土县| 疏附县| 搜索| 吴桥县| 盐津县| 长乐市| 双辽市| 札达县|