最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

匯編語言系列之匯編實(shí)現(xiàn)簡單數(shù)學(xué)運(yùn)算

 更新時(shí)間:2021年11月27日 14:13:54   作者:BoBoRing  
這篇文章主要介紹了匯編語言系列之匯編實(shí)現(xiàn)簡單數(shù)學(xué)運(yùn)算的思路詳解,本文給大家列出了兩種算術(shù)運(yùn)算的代碼,設(shè)計(jì)思路給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

軟件:emu8086

語言:匯編語言(Assembly)

注意:本文列出了兩種算術(shù)運(yùn)算的代碼,全部代碼為博主獨(dú)自一人編寫,會(huì)有瑕疵,謹(jǐn)慎使用。

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

1.1設(shè)計(jì)要求:

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

1.2設(shè)計(jì)思路:

輸入N值然后把N給BH作為循環(huán)次數(shù),通過循環(huán)實(shí)現(xiàn)乘和累加計(jì)算,結(jié)果為十六進(jìn)制,通過除以10得到十進(jìn)制,存入堆棧再依次輸出。

1.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     ;開辟緩沖區(qū)
    LEA DX,pkey
    MOV AH,9
    INT 21H         ;DOS功能調(diào)用,輸出字符串
    
LLP:MOV AH,1
    INT 21H         ;DOS功能調(diào)用,輸入N值
    SUB AL,2FH      
    INC DX          ;DX計(jì)數(shù)
    MOV [SI],AL     ;將輸入的數(shù)據(jù)存在SI緩沖區(qū)
    INC SI
    CMP AL,0CH      ;輸入為封號(hào)結(jié)束輸入
    JNZ LLP
    SUB SI,2
    CMP DX,02H      ;DX不為2表示輸入為兩位數(shù)
    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     ;輸入是兩位數(shù)時(shí)十位乘10加個(gè)位
     SUB AH,AH
     JMP LLP1
     
LP: MOV BH,[SI]      ;把循環(huán)次數(shù)給BH
    MOV AL,BL
    INC BL
    MUL BL           ;BL(加1)和AL(原值)相乘給AX
    ADD CX,AX        ;AX和CX相加給CX,通過循環(huán)實(shí)現(xiàn)累加
    JO  OOF         ;如果溢出重新輸入
    CMP BH,BL        ;判斷是否達(dá)到N值
    JNZ LP 
    MOV AX,CX
    MOV CX,0AH
    MOV BX,0                 
              
    
LOP:MOV DX,0
    DIV CX         ;AX表示的32位數(shù)除以10,商放在AX,余數(shù)放在DX
    INC BX
    ADD DX,30H
    PUSH DX           ;將余數(shù)依次壓入棧
    CMP AX,0
    JNZ LOP           ;商不為0繼續(xù)除10
    LEA DX,result
    MOV AH,9
    INT 21H           ;DOS功能調(diào)用,輸出字符串  
    
OUTPUT:
     POP DX
     MOV AH,2
     INT 21H          ;DX中數(shù)據(jù)依次出棧并顯示
     DEC BX
     JNZ OUTPUT       ;出棧完成后停止
     JMP STATE            
     
OOF:LEA DX,over
    MOV AH,09H
    INT 21H           ;DOS功能調(diào)用,溢出顯示
    JMP STATE 
          
CODE ENDS

END STATE

1.4程序運(yùn)行結(jié)果及分析:

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

圖5 計(jì)算S=1+2×3+3×4+4×5+···+N(N+1)設(shè)計(jì)結(jié)果

2.計(jì)算N!

2.1設(shè)計(jì)要求:

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

2.2設(shè)計(jì)思路:

輸入N值,通過循環(huán)實(shí)現(xiàn)階乘并將計(jì)算結(jié)果存入AX,然后十六進(jìn)制轉(zhuǎn)十進(jìn)制輸出。

2.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   ;數(shù)據(jù)段初始化

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

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

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

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

2.4程序運(yùn)行結(jié)果及分析:

階乘部分是利用MUL指令A(yù)X中存放計(jì)算結(jié)果并實(shí)現(xiàn)階乘,除階乘計(jì)算部分外,其它部分和第五題類似,同樣結(jié)果轉(zhuǎn)十進(jìn)制輸出時(shí)遇到了麻煩,利用除以10存入堆棧再依次取出并顯示來實(shí)現(xiàn)。

圖6 計(jì)算N!設(shè)計(jì)結(jié)果

到此這篇關(guān)于匯編語言系列之匯編實(shí)現(xiàn)簡單數(shù)學(xué)運(yùn)算的文章就介紹到這了,更多相關(guān)匯編語言數(shù)學(xué)運(yùn)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 匯編語言指令集學(xué)習(xí)CMPXCHG比較并交換操作指令詳解

    匯編語言指令集學(xué)習(xí)CMPXCHG比較并交換操作指令詳解

    這篇文章主要為大家介紹了匯編語言指令集學(xué)習(xí)CMPXCHG比較并交換操作的指令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 匯編語言中的各種寄存器介紹

    匯編語言中的各種寄存器介紹

    匯編語言(assembly language)是一種用于電子計(jì)算機(jī)、微處理器、微控制器或其他可編程器件的低級(jí)語言,亦稱為符號(hào)語言.這篇文章主要介紹了匯編語言中的各種寄存器介紹,需要的朋友可以參考下
    2020-01-01
  • 王爽 匯編語言學(xué)習(xí)筆記(詳細(xì))

    王爽 匯編語言學(xué)習(xí)筆記(詳細(xì))

    王爽匯編語言第三版是一款高清完整版的專業(yè)編程圖書,該書結(jié)構(gòu)設(shè)計(jì)合理,內(nèi)容全面涵蓋知識(shí)點(diǎn)豐富,適合自學(xué)者使用,有需要者快來
    2020-01-01
  • 匯編語言:x86匯編指令大全及其注意事項(xiàng)

    匯編語言:x86匯編指令大全及其注意事項(xiàng)

    用最精煉的語言,記錄匯編語言中所有常用或不常用或極其重要的匯編指令及其注意事項(xiàng),以方便自己和讀者進(jìn)行查閱,如有錯(cuò)誤和不足請(qǐng)?jiān)谠u(píng)論區(qū)指出
    2021-10-10
  • ARM匯編判斷之如何用匯編判斷數(shù)組中正負(fù)數(shù)個(gè)數(shù)

    ARM匯編判斷之如何用匯編判斷數(shù)組中正負(fù)數(shù)個(gè)數(shù)

    這篇文章主要介紹了ARM匯編判斷之如何用匯編判斷數(shù)組中正負(fù)數(shù)個(gè)數(shù),在匯編語言中程序的基本框架是不變的,這里我們可以直接把正向遍歷的程序給貼過來,然后我們思考怎么運(yùn)用判斷后綴把數(shù)組中正數(shù)和負(fù)數(shù)分開,進(jìn)行判斷個(gè)數(shù)和分別求和,需要的朋友可以參考下
    2022-04-04
  • DEBUG 命令詳解

    DEBUG 命令詳解

    這篇文章主要介紹了DEBUG 命令詳解,需要的朋友可以參考下
    2006-12-12
  • 匯編語言LDR指令和LDR偽指令詳解

    匯編語言LDR指令和LDR偽指令詳解

    這篇文章主要介紹了匯編語言LDR指令和LDR偽指令詳解,偽指令是用來自動(dòng)拆分代碼值的,會(huì)把一條語句拆分成多條語句,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • Windows10下利用DOSBOX和MASM32搭建匯編語言開發(fā)環(huán)境

    Windows10下利用DOSBOX和MASM32搭建匯編語言開發(fā)環(huán)境

    這篇文章主要介紹了Windows10下利用DOSBOX和MASM32搭建匯編語言開發(fā)環(huán)境,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 匯編 JMP使用詳解

    匯編 JMP使用詳解

    這篇文章主要介紹了匯編 JMP使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 一位數(shù)乘法的匯編語言實(shí)現(xiàn)方法

    一位數(shù)乘法的匯編語言實(shí)現(xiàn)方法

    這篇文章主要介紹了一位數(shù)乘法的匯編語言實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評(píng)論

凭祥市| 宝兴县| 定襄县| 海丰县| 莫力| 海林市| 江安县| 灵石县| 田东县| 兴安盟| 铅山县| 北流市| 邵阳县| 天气| 西青区| 延寿县| 枣强县| 民和| 依安县| 五台县| 任丘市| 姚安县| 铅山县| 南通市| 施秉县| 遂昌县| 社会| 青州市| 本溪市| 区。| 治多县| 海盐县| 县级市| 武安市| 教育| 哈巴河县| 阿城市| 博客| 南充市| 烟台市| 遵化市|