![匯編語言第5章1數(shù)值運(yùn)算程序設(shè)計(jì)課件_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/9bfd5fc2-9a7a-446f-94d7-ba40ae3bf23c/9bfd5fc2-9a7a-446f-94d7-ba40ae3bf23c1.gif)
![匯編語言第5章1數(shù)值運(yùn)算程序設(shè)計(jì)課件_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/9bfd5fc2-9a7a-446f-94d7-ba40ae3bf23c/9bfd5fc2-9a7a-446f-94d7-ba40ae3bf23c2.gif)
![匯編語言第5章1數(shù)值運(yùn)算程序設(shè)計(jì)課件_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/9bfd5fc2-9a7a-446f-94d7-ba40ae3bf23c/9bfd5fc2-9a7a-446f-94d7-ba40ae3bf23c3.gif)
![匯編語言第5章1數(shù)值運(yùn)算程序設(shè)計(jì)課件_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/9bfd5fc2-9a7a-446f-94d7-ba40ae3bf23c/9bfd5fc2-9a7a-446f-94d7-ba40ae3bf23c4.gif)
![匯編語言第5章1數(shù)值運(yùn)算程序設(shè)計(jì)課件_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/9bfd5fc2-9a7a-446f-94d7-ba40ae3bf23c/9bfd5fc2-9a7a-446f-94d7-ba40ae3bf23c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、5.1 兩個(gè)多字節(jié)數(shù)的加減運(yùn)算 這里所指的兩個(gè)多字節(jié)數(shù)的加減運(yùn)算, 包括二進(jìn)制數(shù)的加減運(yùn)算和組合的BCD數(shù)加減運(yùn)算由于8088內(nèi)部寄存器是16位的, 因此不能直接進(jìn)行多字節(jié)數(shù)的加減運(yùn)算。高位加法指令應(yīng)采用ADC指令; 減法指令應(yīng)采用SBB指令。 第第5章章 數(shù)值運(yùn)算程序設(shè)計(jì)數(shù)值運(yùn)算程序設(shè)計(jì) 1. 兩個(gè)多字節(jié)數(shù)的二進(jìn)制加法運(yùn)算兩個(gè)多字節(jié)數(shù)的二進(jìn)制加法運(yùn)算 例5.1 設(shè)多字節(jié)的被加數(shù)從FIRST單元開始存放, 多字節(jié)的加數(shù)從SECOND單元開始存放, 相加后的結(jié)果從DEST單元開始存放, 設(shè)字節(jié)數(shù)為5。 則程序如下: NAME EX051 ; MULTIPLE BYTES-ADDITION DAT
2、A SEGMENTFIRST DB 1AH, 25H, 4EH, 60H, 3DHSECOND DB 80H, 49H, 62H, AEH, 4EH DEST DB 5 DUP(?)DATA ENDS COSEG SEGMENT ASSUME CS:COSEG, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV SI, OFFSET FIRST MOV BX, OFFSET SECOND MOV DI, OFFSET DEST MOV CX, LENGTH DEST CLD CLC ADDHEX: LODSB FIRS
3、T ADC AL, BX STOSB DEST INC BX LOOP ADDHEX MOV AH, 4CH INT 21H COSEG ENDS END START 5.2 多字節(jié)乘法運(yùn)算多字節(jié)乘法運(yùn)算 設(shè)有兩個(gè)32位二進(jìn)制數(shù), 相乘的結(jié)果將是一個(gè)64位范圍內(nèi)的二進(jìn)制數(shù)。 如果將一個(gè)乘數(shù)分為兩個(gè)字, 被乘數(shù)也分為兩個(gè)字, 分別按字進(jìn)行相乘。 例如被乘數(shù)的兩個(gè)字分別為X1和X0, 乘數(shù)的兩個(gè)字分別為Y和Y0, 則: Y=(Y1)(Y0)=(Y1)*216+(Y0) X=(X1)(X0)=(X1)*216+(X0) X*Y=(Y1)*216+(Y0)*(X1)*216+(X0) =(Y1)*(X
4、1)*232+(Y1)*(X0)*216+ (Y0)*(X1)*216+(Y0)*(X0) 例例5.2 兩個(gè)32位數(shù)分別為X和Y, 乘積放在RESULT開始的四個(gè)字中, 低位字節(jié)放在低地址中。 程序如下:; NAME EX052DATA SEGMENT X DD 12345678H; 32位被乘數(shù) Y DD 567890ABH; 32位乘數(shù) RESULT DW 4 DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV SI, OFFSET RESULT MOV AX, W
5、ORD PTR X MOV CX, WORD PTR Y MUL CX MOV SI, AX MOV SI+2, DX MOV AX, WORD PTR X MOV CX, WORD PTR Y+2 MUL CX ADD SI+2, AX ADC WORD PTRSI+4, DX MOV AX, WORD PTR X+2 MOV CX, WORD PTR Y MUL CX ADD SI+2, AX ADC SI+4, DX ADC WORD PTR SI+6, 0 MOV AX, WORD PTR X+2 MOV CX, WORD PTR Y+2 MUL CX ADD SI+4, AX ADC
6、 SI+6, DX MOV AH, 4CH INT 21H CODE ENDS END START以上程序很容易看懂, 在進(jìn)行加法時(shí), 216和232只要分別位移一個(gè)字或兩個(gè)字再進(jìn)行加法即可。 相對SI, SI+2為高位字; 而SI+4和SI+6又是SI字的更高一位字或兩位字。 當(dāng)ADC指令加一個(gè)立即數(shù)0時(shí), 由于沒聲明是字節(jié)0還是字0, 所以WORD PTR不能省去, 否則就會在匯編時(shí)出錯(cuò)。程序分析:程序分析:5.3 多字節(jié)除法多字節(jié)除法 設(shè)有一個(gè)64位數(shù)除16位數(shù),則商可能仍是64位, 而余數(shù)為16位。 若用一般的除法,則很難進(jìn)行處理。 如果用被除數(shù)連續(xù)減去除數(shù)得到商,很可能要減億萬次,計(jì)
7、算機(jī)將用很長時(shí)間才能完成這么大的運(yùn)算量。 如果在進(jìn)行最高位除法時(shí),高16位被除數(shù)為0, 然后將被除數(shù)最高16位送AX,除數(shù)放在CX中, 這樣, 除法肯定不會產(chǎn)生溢出。第一次除法后的余數(shù)放在DX中, 作為第二次除法的高16位,將下一個(gè)被除數(shù)16位送AX, 再進(jìn)行除法, 用這種方法,可以順利地完成整個(gè)除法運(yùn)算。例例5.3 設(shè)被除數(shù)為8個(gè)字節(jié)的X, 而除數(shù)為兩個(gè)字節(jié)的Y, 商放在RESULT中, 仍采取高字節(jié)放在高地址, 余數(shù)放在EXTRA中。 程序如下:;NAME EX053DATA SEGMENT X DQ 1234567890ABCDEFH Y DW 1234HRESULT DW 4 DUP(
8、0) EXTRA DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, Y MOV DX, 0 MOV AX, WORD PTR X+6 DIV CX MOV WORD PTR RESULT+6, AX MOV AX, WORD PTR X+4 DIV CX MOV WORD PTR RESULT+4, AX MOV AX, WORD PTR X+2 DIV CX MOV WORD PTR RESULT+2, AX MOV AX, WORD PTR X DIV CX
9、MOV WORD PTR RESULT, AX MOV EXTRA, DX MOV AH, 4CH INT 21H CODE ENDS END START 5.4 BCD數(shù)的算術(shù)運(yùn)算數(shù)的算術(shù)運(yùn)算 8088指令系統(tǒng)提供了若干條BCD調(diào)整指令, 但這些指令只能對用BCD碼表示的一位或兩位十進(jìn)制數(shù)操作,范圍狹小。對多字節(jié)的BCD碼進(jìn)行運(yùn)算就要用大量的調(diào)整指令,尤其是乘法, 所費(fèi)的時(shí)間是二進(jìn)制運(yùn)算的數(shù)倍。一般情況下對BCD數(shù)的運(yùn)算,先轉(zhuǎn)換為二進(jìn)制數(shù),然后進(jìn)行相應(yīng)的二進(jìn)制運(yùn)算,若運(yùn)算結(jié)果要求以十進(jìn)制BCD輸出或BCD的ASCII輸出,可以再次運(yùn)用代碼轉(zhuǎn)換的方法來實(shí)現(xiàn)。 對于多字節(jié)壓縮型的十進(jìn)制加法和減法
10、, 已在例5.1和5.2中介紹過。 下面對非壓縮型的十進(jìn)制數(shù)運(yùn)算再舉幾個(gè)例子。 1. 多字節(jié)非壓縮型十進(jìn)制數(shù)加法 例5.7設(shè)在存儲單元A、 B分別有10個(gè)非壓縮BCD數(shù), 相加后的結(jié)果放在C單元開始的11個(gè)單元中, 低位字節(jié)從低地址存放。 程序如下: ;NAME EX056 DATA SEGMENT A DB 1, 2, 3, 4, 5, 6, 7, 9, 8, 4 B DB 8, 9, 7, 6, 5, 4, 8, 7, 6, 5 C DB 11 DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV
11、 AX, DATA MOV DS, AX MOV ES, AX CLD CLC MOV SI, OFFSET A MOV BX, OFFSET B MOV DI, OFFSET C MOV CX, 10 AGAIN: LODSB ADC AL, BX AAA ; STOSB INC BX LOOP AGAIN ADC BYTE PTR DI, 0 MOV AH, 4CH INT 21H CODE ENDS END START 對于非壓縮型多字節(jié)的BCD數(shù)減法, 也可對上述程序稍加改動來實(shí)現(xiàn)。 若被減數(shù)為A, 減數(shù)為B, 結(jié)果送C, 則將上述程序中的ADC指令改為SBB指令, AAA指令改為AA
12、S指令, 在A大于B的情況下, 還可將循環(huán)后的一條指令A(yù)DC刪去。2. 非壓縮型十進(jìn)制數(shù)相乘非壓縮型十進(jìn)制數(shù)相乘 例例5.7 設(shè)被乘數(shù)從A單元開始存放, 乘數(shù)為一位非壓縮型BCD數(shù), 存于B單元, 相乘后的十進(jìn)制結(jié)果從C單元開始存放, 仍為非壓縮型的BCD數(shù)。 分析: 乘法十進(jìn)制調(diào)整指令A(yù)AM完成如下操作: 首先將AX中的乘積分解為兩位BCD數(shù), 低位存在AL中, 高位送AH。 在進(jìn)行高一位的乘法時(shí), 應(yīng)將調(diào)整后的低位BCD數(shù)與上一次乘法中的高位BCD相加。 由于相加后, 可能有進(jìn)位或需要進(jìn)行加6修正, 這時(shí)應(yīng)加一條AAA調(diào)整指令。 這兩次BCD調(diào)整, 都可能影響AH, 所以AH應(yīng)在兩次BCD
13、的調(diào)整后再保存。 程序如下:; NAME EX057 DATA SEGMENT A DB 2, 6, 3, 7, 5 N EQU $-A B DB 6 C DB N+1 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS, AX MOV ES, AX CLD LEA SI, A LEA DI, C MOV CX, N MOV BYTE PTR DI, 0 AGAIN: LODSB MUL B AAM ADD AL, DI ; 加低位乘積的高位 AAA STOSB ;
14、執(zhí)行后DI將自增 MOV DI, AH LOOP AGAIN MOV AH, 4CH INT 21H CODE ENDS END START 它與多字節(jié)BCD加法相類似, 將最低位乘積置成0, 就如同BCD加法中的CLC指令的作用, 即把最初低位乘積的高位置成0。 STOSB指令將乘積的低位BCD存于本位的乘積單元, 而DI指向下一個(gè)單元, 用來存放AH中的乘積的高位BCD數(shù)。 3. 兩個(gè)多位十進(jìn)制數(shù)相乘兩個(gè)多位十進(jìn)制數(shù)相乘例5.8 有兩個(gè)BCD數(shù)為345*789,設(shè)乘積為Z, 則有: Z=345*7*102+345*8*10+345*9Z=A*100+B*10+C其中A、 B、 C均可由多位
15、BCD與一位BCD相乘來實(shí)現(xiàn), 相加則可通過B左移一個(gè)字節(jié), A左移兩個(gè)字節(jié)相加實(shí)現(xiàn)。 程序如下: ;NAME EX058DATA SEGMENT A DB 5, 4, 3 ; 被乘數(shù)為345B DB 9, 8, 7 ; 乘數(shù)為789C DB 6 DUP(0) ; 部分積中間結(jié)果D DB 6 DUP(0) ; 乘積的結(jié)果單元N1 EQU 3 ; 按位乘計(jì)數(shù)器N2 EQU 6 ; 按位加計(jì)數(shù)器COUNT DB 3 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS, AX MOV E
16、S, AX MOV SI, OFFSET A MOV BX, OFFSET B MOV DI, OFFSET C MOV CX, N1 AGAIN: PUSH BX PUSH CX PUSH DI CLD MOV DI, OFFSET C MOV CX, N2 CLEAR: MOV BYTE PTR DI, 0 ; 清中間區(qū) INC DI LOOP CLEAR POP DI ; 指向本次部分積低位 POP CX MOV SI, OFFSET A PUSH CX PUSH DI CALL SM ; 進(jìn)行十進(jìn)制乘法 MOV SI, OFFSET C MOV DI, OFFSET D MOV CX,
17、 N2 CLC CALL SA ; 加本次部分積 POP CX POP DI POP BX INC DI ; 指向乘積的高一位 INC BX ; 指向乘數(shù)的高一位 DEC COUNT ; 乘數(shù)位數(shù)計(jì)數(shù)器 JNZ AGAIN ; 未乘完繼續(xù) MOV AH, 4CH INT 21H SM PROC LOP: LODSB ; 取被乘數(shù)至AL MUL BYTE PTRBX AAM ; 十進(jìn)制乘法調(diào)整 ADD AL, DI ; 計(jì)算部分積U AAA STOSB MOV DI, AH LOOP LOP RET SM ENDP SA PROC LP: LODSB ; 取被加數(shù) MOV AH, 0 ADC A
18、L, DI ; 加部分積 AAA STOSB ; 存新的部分積 ADD DI, AH LOOP LP RET SA ENDP CODE ENDS END START 說明: 本程序的算法是: D單元是總的部分積, 計(jì)算結(jié)束時(shí)為最后的結(jié)果乘積。 C單元是中間的部分積, 由于乘數(shù)位不同, 中間部分積最低位是不同的, 故每次存中間結(jié)果前, 應(yīng)該清除C存儲區(qū)的內(nèi)容。 SM子程序完成多位被乘數(shù)與一位字節(jié)的乘數(shù)十進(jìn)制乘法, 部分積存于C存儲區(qū), 然后調(diào)用SA子程序, 將這次部分積加到總部分積中去。4. 多字節(jié)非壓縮型多字節(jié)非壓縮型BCD除法除法例5.9 為實(shí)現(xiàn)多位非壓縮型BCD被一位BCD除法運(yùn)算,首先運(yùn)用除法十進(jìn)制調(diào)整指令的功能, 將AH和A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石化與化工工程作業(yè)指導(dǎo)書
- 建設(shè)工程材料居間合同
- 養(yǎng)殖類雇傭勞動合同
- 裝修設(shè)計(jì)合同協(xié)議書
- 工程項(xiàng)目安全管理作業(yè)指導(dǎo)書
- 網(wǎng)站開發(fā)與維護(hù)技術(shù)作業(yè)指導(dǎo)書
- 夫妻離婚協(xié)議書標(biāo)準(zhǔn)格式
- 機(jī)械拆除承包合同
- 農(nóng)業(yè)與食品安全作業(yè)指導(dǎo)書
- 2025年株洲貨運(yùn)資格證題庫及答案大全
- 花球啦啦操教案-教學(xué)設(shè)計(jì)教案
- 語言和語言學(xué)課件
- 《工作場所安全使用化學(xué)品規(guī)定》
- 2022年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)考試筆試試題及答案解析
- 市政工程設(shè)施養(yǎng)護(hù)維修估算指標(biāo)
- 《管理學(xué)基礎(chǔ)》完整版課件全套ppt教程(最新)
- 短視頻:策劃+拍攝+制作+運(yùn)營課件(完整版)
- 基金會財(cái)務(wù)報(bào)表審計(jì)指引
- 藍(lán)色卡通風(fēng)好書推薦教育PPT模板
- 2022年江蘇省泰州市中考數(shù)學(xué)試題及答案解析
- 石家莊鐵道大學(xué)四方學(xué)院畢業(yè)設(shè)計(jì)46
評論
0/150
提交評論