版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1-10AH,40H,4EH,50H,5DH,64H,7DH,F(xiàn)FH1-2 44,100,213,256,888,1278,32451-3 十進(jìn)制數(shù)原碼補(bǔ)碼十進(jìn)制數(shù)原碼補(bǔ)003A0-1892EE-92883A0FC60301E1E8796225C225C-309EE2-8796A25CDDA4347015B015B655300000FFFA0000FFFA-347815BFEA5-655308000FFFAFFFF00061-4 用十進(jìn)制數(shù)寫出下列補(bǔ)碼表示的機(jī)器數(shù)的真值:27,113,-128,-8,14717,31467,-27824,-124781-5溢出; 溢出
2、 無溢出 無溢出1-6 00AAH, 803BH, FF88H。1-7 將下列各組二進(jìn)制數(shù)進(jìn)行“與”運(yùn)算。(1)DAH99H (2)BAH56H (3)95HFFH (1)1101101010011001解:1101101010011001=10011000(2)1011110001010110解:1011110001010110=00010100(3)100101011111111解:1001010111111111=100101011-8 將下列各組二進(jìn)制數(shù)進(jìn)行“或”運(yùn)算。(1)DAH99H (2)F0H5AH (3)C6H45H(1)1101101010011001解:110110101
3、0011001=11011011(2)1111000001011010解:1111000001011010=11111010(3)1100011000000000解:1100011000000000=110001101-9 10000110Å01011010=1101110010111100Å10101010=0001011011011010Å10011001=010000111-10 十進(jìn)制數(shù)壓縮BCD數(shù)非壓縮BCD數(shù)ASCII碼3838H0308H3338H9797H0907H3937H105105H010005H313035H255255H020505H32
4、3535H483483H040803H343833H764764H070604H373634H10001000H01000000H31303030H10251025H01000205H31303235H1-11 -43,126,8192,-301161-12 A8H1-170914H:00F2H, 09232H1-18 DS=2F5FH時(shí),物理地址變?yōu)?7820H。不同段地址的數(shù)據(jù)段示意圖如下圖2所示。2.3BX=5566HAX=3344HCX=5566HDX=1122H堆棧存儲(chǔ)器的邏輯地址、堆棧指示器的指向及棧區(qū)的內(nèi)容如下圖所示。2.40036H, 003AH 2.5程 序 段AXMOV A
5、X,00000DEC AXFFFFADD AX,7FFFH7FFEADC AX,18000NEG AX8000OR AX,3FDFHBFDFAND AX,0EBEDHABCDXCHG AH,ALCDABSAL AX,19B56RCL AX,136AD 2.6。指 令存儲(chǔ)器操作數(shù)的邏輯地址注 釋SUB BP,AL0FC0H:0000H段地址在SSMOV BX,BH1000H:0000HMOV DI,DL1000H:0000HMOV ES:SI,BL2000H:0000HADD BP+500H,AH0FC0H:0500H段地址在SSSUB SI-300H,AL1000H:FD00H-300H=FD
6、00HMOV DI+1000H,DL1000H:1000HMOV BX-8,CL1000H:FFF8H-8=FFF8HMOV ES:DI+1000H,CH2000H:1000HMOV BP+SI,DH0FC0H:0000H段地址在SSMOV BX+DI,DL1000H:0000H 2.7 0000H, 0880H, 0081H, 0800H2.8 NEG AX, AND AX,7FFFH2.9 (1)MOV CL,4SHL AX,CLSHL BL,CLMOV AL,BLSHR DH,CLOR AL,DH(2)XOR CX,0FF0H(3)MOV AL,BXMOV AH,0ADD AL,BX+1
7、ADC AH,0ADD AL,2 BXADC AH,0(4)方法1:MOV AL,BXXCHG AL,BX+3MOV BX,ALMOV AL,1BXXCHG AL,2BXMOV 1BX,AL方法2:MOV AX,BXXCHG AH,2BXXCHG AL,3BXMOV BX,AX(5)XCHG BH,BLMOV AL,BLAND BL,0FHMOV CL,4SHR AL,CLMOV DL,BHAND DL,0FHSHR BH,CLMOV CL,BH(6) MOV AH,0 ;將AL中的無符號(hào)數(shù)擴(kuò)展成16位MOV CL,2SHL AX,CL ;將AX乘以4MOV DX,AXSHL AX,CL ;將
8、AX再乘以4ADD AX,DX2.10數(shù)據(jù)的存儲(chǔ)形式:(2)變量名偏移地址(H)變量的值(H)S1000000S2000631NB000B02NW000E0078P0012FFFF(3)程 序 段目的寄存器的值源操作數(shù)的尋址方式MOV BX, OFFSET S1+30003立即尋址MOV SI, OFFSET S20006立即尋址MOV CL, COUNT0B立即尋址MOV BP, NW+2FF00直接尋址MOV DX, WORD PTR NB0202直接尋址MOV AL, SI+334變址尋址MOV AH, SI+BX+135基址變址尋址MOV CH, BYTE PTR NW+3FF直接尋址
9、 (4)改正下列程序段中不正確指令的錯(cuò)誤: a.MOV AX,S1 b.MOV BP,OFFSET S2MOV CL,BP c. MOV SI,OFFSET NBMOV SI, ¢+¢ d.MOV DL,NW+2 e.MOV DI,CH f.MOV BX,OFFSET S1MOV DH,BX+3 g.INC COUNT h.MOV NB,S2 i.MOV AX,BX+S1j.ADD AX, DX+NW解:a.MOV AX, WORD PTR S1 b.MOV BP, OFFSET S2MOV CL, DS: BP c.MOV SI, OFFSET NBMOV BYTE PT
10、R SI, ¢+¢ d.MOV DL, BYTE PTR NW+2 e.XCHG CH, CLMOV CH, 0MOV DI, CX f.MOV BX, OFFSET S1MOV DH, BX+3 g.錯(cuò)誤指令。在操作數(shù)中直接書寫數(shù)值表達(dá)式 COUNT+1 h.MOV AL, S2MOV NB, AL i.MOV AX, WORD PTR S1BXjADD AX, DI+NW2.11stacksegment stack ¢stack¢dw 32 dup(0)stackendsdatasegmentFIRST DD 0A46E5F90HSECONDDB5
11、DUP(0)dataendscodesegmentstartproc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV AX, WORD PTR FIRSTMOV DX, WORD PTR FIRST+2MOV SECOND+4, 0SHL AX, 1RCL DX, 1RCL SECOND+4, 1SHL AX, 1RCL DX, 1RCL SECOND +4, 1MOV WRORD PTR SECOND, AXMOV WORD PTR SECOND +2, DXre
12、tstartendpcode endsend start2.12stacksegment stack ¢stack¢dw 32 dup(0)stackendsdatasegmentFIRST DD 0A46E5F90HTHIRDDB 4 DUP(0)dataendscodesegmentstartproc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV AX, WORD PTR FIRSTMOV DX, WORD PTR FIRST+2SAR D
13、X, 1RCR AX, 1SAR DX, 1RCR AX, 1MOV WORD PTR THIRD, AXMOV WORD PTR THIRD+2, DXretstartendpcode endsend start2.13stacksegment stack ¢stack¢dw 32 dup(0)stackendsdatasegmentFIRST DD 0A46E5F90HFORTHDB 4 DUP(0)dataendscodesegmentstartproc farassume ss: stack, cs: code, ds: datapush dssub ax, axp
14、ush axmov ax, datamov ds, axMOV AX, WORD PTR FIRST NOT AXMOV WORD PTR FORTH, AXMOV AX, WORD PTR FIRST+2NOT AXMOV WORD PTR FIRST+2, AXADD WORD PTR FORTH, 1ADC WORD PTR FORTH+2, 0retstartendpcode endsend start2.14 數(shù)據(jù)段的內(nèi)存映象圖:該程序的功能是將字節(jié)變量BUF中的兩位BCD數(shù)以十六進(jìn)制數(shù)形式顯示出來。具體顯示是在下一行的行首顯示(BUF)=78H。3-1 1. AX=0048H,AX
15、=0702H2. AX=0059H, AX=0411H, AX=0107H,DL=04H3. AX=0011H, AX=0107H4AX=005AH, AX=0900H, AX=0908H5. AL=62H6. AX=0248H3-2stacksegment stack ¢stack¢dw 32 dup(0)stack endsdatasegmentBVARDB 99Hdataendscodesegmentbeginproc farassume ss: stack , cs: code, ds: datapush dssub ax, axpush axmov ax, dat
16、amov ds, axMOV AL, BVARMOV CL, 4SHR AL, CLMOV AH, 10MUL AHAND BVAR, 0FHADD BVAR, ALretbeginendpcodeendsend begin先將2位壓縮BCD數(shù)轉(zhuǎn)換為非壓縮BCD數(shù),再用AAD指令將非壓縮BCD數(shù)轉(zhuǎn)換為二進(jìn)制數(shù):MOV AL, BVARMOV AH, ALMOV CL, 4SHR AH, CLAND AL, 0FHAADMOV BVAR, AL3-3stack segment stack ¢stack¢ dw 32 dup(0) stack ends data segment
17、 W1 DW 0807H W2 DW 0609H B3 DB 2 DUP(0) data ends code segment begin proc far assume ss:stack,cs:code,ds:data push ds sub ax,ax push ax mov ax,data mov ds,axMOV AX, W1 ;AX=0807H SUB AL,BYTE PTR W2 ;AL=FEH, CF=1 AAS ;AL=08H, AH=07HMOV B3, ALMOV AL,AHSUB AL,W2+1MOV B3+1,AL ret begin endp code ends end
18、 begin還可以用AAD指令將兩個(gè)非壓縮BCD數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),相減后再用AAM將差轉(zhuǎn)換為非壓縮BCD數(shù):MOV AX, W2AADMOV DX,AXMOV AX,W1AADSUB AX,DXAAMMOV BYTE PTR B3,AX3-4stack segment stack ¢stack¢ dw 32 dup(0) stack ends data segment D1 DD 06070809H D2 DD 04050607H OBF DB 6 DUP(0) data ends code segment begin proc far assume ss:stack,cs
19、:code,ds:datapush dssub ax,axpush axmov ax,datamov ds,axMOV SI,0MOV DI,OFFSET OBF+5MOV BYTE PTRDI,¢$¢MOV CX,4XOR AH,AHAGAIN: MOV AL, BYTE PTR D1SIADD AL, BYTE PTR D2SIADD AL,AHMOV AH,0AAAADD AL,30HDEC DIMOV DI,ALINC SILOOP AGAINAND AH,AHJZ N5DEC DIMOV BYTE PTRDI,¢1¢N5: MOV DX,DIM
20、OV AH,9INT 21H ret begin endp code ends end begin3-5stack segment stack ¢stack¢ dw 32 dup(0) stack ends data segment W1 DW 8931H W2 DW 5678H OBF DB 6 DUP(0) data ends code segment begin proc farassume ss:stack,cs:code,ds:datapush dssub ax,axpush axmov ax,datamov ds,axMOV DI,0MOV AL, BYTE P
21、TR W1 ;AL=31HADD AL, BYTE PTR W2 ;AL=A9H, CF=0, AF=0DAA ;AL=09H, CF=1MOV AH, ALMOV AL, BYTE PTR W1+1 ;AL=89HADC AL, BYTE PTR W2+1 ;AL=E0H, CF=0, AF=1DAA ;AL=46H, CF=1PUSHFMOV DI OFFSET OBF+5MOV BYTE PTRDI, ¢$¢MOV CL,4 XCHG AH,ALAGAIN: MOV DL,0FHAND DL,ALADD DL,30HDEC DIMOV DI,DLSHR AX,CLAN
22、D AX,AXJNZ AGAINPOPFJNC OUTPUTDEC DIMOV BYTE PTRDI, ¢1¢OUTPUT: MOV DX,DIMOV AH,9INT 21H begin endp code endsend begin 3-6stack segment stack ¢stack¢dw 32 dup(0)stack endsdata segmentBVAR DB 99HOBUF DB 4 DUP(0)data endscode segmentbegin proc farassume ss: stack, cs: code, ds: data
23、push dssub ax, axpush axmov ax, datamov ds, axMOV AL ,BVAR ;二進(jìn)制數(shù)送ALMOV AH, 0 ;二進(jìn)制數(shù)擴(kuò)展為16位(無符號(hào)數(shù)擴(kuò)展)MOV DL, 100DIV DLADD AL, 30H ;將百位變?yōu)锳SCII碼MOV OBUF, AL ;存百位MOV AL,AH ;將十位和個(gè)位的二進(jìn)制數(shù)即余數(shù)送ALAAM ;將AL中的二進(jìn)制數(shù)轉(zhuǎn)換為ASCII BCD數(shù)ADD AX,3030H ;將AX中的ASCII BCD數(shù)變?yōu)锳SCII碼MOV OBUF+1,AHMOV OBUF+2,ALMOV OBUF+3,¢$¢MOV
24、DX,OFFSET OBUFMOV AH,9INT 21Hretbegin endpcode endsend begin將8位二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)也可以用除10取余法實(shí)現(xiàn)。轉(zhuǎn)換程序段如下:MOV AL,BVARXOR AH,AH ;將8位二進(jìn)制數(shù)擴(kuò)展為16位(無符號(hào)數(shù)擴(kuò)展)MOV DL,10DIV DLADD AH,30H ;將第一個(gè)余數(shù)即個(gè)位變?yōu)锳SCII碼MOV OBUF+2,AHXOR AH,AH ;將AL中的二進(jìn)制數(shù)擴(kuò)展為16位DIV DLADD AX,3030H ;AH為十位,AL為百位MOV WORD PTR OBUF,AXMOV OBUF+3,¢$¢還可以用
25、左移二進(jìn)制數(shù)的方法將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù):XOR AX,AX;清0AXMOV CX,8;左移二進(jìn)制數(shù)8次AGAIN: SHL BVAR, 1ADC AL, ALDAAADC AH, 0; AH的值小于等于2不需校正LOOP AGAINADD AH, 30H;百位轉(zhuǎn)換為ASCII碼MOV OBUF, AHMOV AH, AL;保存十位和個(gè)位MOV CL, 4SHR AL, CL;BCD數(shù)十位移至AL低4位AND AH, OFH;BCD數(shù)個(gè)位在AH低4位ADD AX, 3030H ;個(gè)位和十位轉(zhuǎn)換為ASCII碼MOV WORD PTR OBUF+1, AXMOV OBUF+3, ¢$&
26、#162;以二進(jìn)制數(shù)11111101B轉(zhuǎn)換為BCD數(shù)0253H為例,說明轉(zhuǎn)換的過程,全過程如下圖所示。3-7stack segment stack ¢stack¢dw 32 dup(0)stack endsdata segmentTAB DW 0DB ¢0 $¢DW 1DB ¢1 $¢DW 8DB ¢8 $¢ DW 64000DB ¢64000$¢LFZ DW 0IBUF DB 3,0,3 DUBP(0)data endscode segmentbegin proc farassume ss:
27、stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV DX, OFFSET IBUFMOV AH, 10INT 21HMOV AH, 2MOV DL, 0AHINT 21HMOV AX, WORD PTR IBUF+2 ;個(gè)位送AH,十位送ALXCHG AH,AL ;個(gè)位與十位交換CMP IBUF+1,2 ;判別N是一位數(shù)還是二位數(shù)JE COMMOV AL,AHXOR AH,AH; ;若N為一位數(shù),則要清AHCOM: AND AX, 0F0FH ;將AX中的ASCII碼變?yōu)锳SCII BCD數(shù)AAD
28、 ;將AX中的ASCII BCD數(shù)變?yōu)槎M(jìn)制數(shù)MOV CL,3SHL AX,CL ;將AX中的二進(jìn)制數(shù)乘以8MOV BX,AXMOV AX,TAB BXMOV LFZ,AXMOV DX,OFFSET TAB+2 ;DX指向立方值的ASCII碼ADD DX,BX ;將DX下移8N,指向N的ASCII碼MOV AH,9INT 21Hretbegin endpcode endsend begin3-8stack segment stack ¢stack¢dw 32 dup(0)stack endsdata segmentWA DW 0ABCDHBA DB 0data endsco
29、de segmentbegin proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV AH, 1 ;1號(hào)功能調(diào)用,鍵入i(i=03)INT 21HMOV DX,WATEST AL,1 ;判別鍵入數(shù)i是奇數(shù)還是偶數(shù),D0位為0則為偶數(shù)JZ NRSMOV CL, 4 ;i為奇數(shù)將a3、a1移至各自字節(jié)的低4位SHR DX, CLNRS: TEST AL,2 ;判別鍵入數(shù)i的D1位是0還是1?JZ HNSLMOV DL, DH ;i的D1位為1則是取a3或a2,將其送
30、DLHNSL: AND DL, 0FH ;取低4位MOV BA, DLretbegin endpcode endsend begin本題還可以將鍵入值乘以4得到將ai移到WA的低4位的移位次數(shù),對(duì)WA執(zhí)行移位操作即可將ai移到WA的低4位。取WA的低4位送入BA中。即將分支程序設(shè)計(jì)成較簡單的順序程序。用此方法的編制的程序段如下:MOV AH, 1INT 21HMOV CL, AL ;將鍵入數(shù)(ASCII碼)送移位次數(shù)寄存器CLAND CL, 0FH ;將移位次數(shù)的ASCII碼變?yōu)槎M(jìn)制數(shù)SHL CL, 1 ;將鍵入i值乘以4SHL CL,1MOV AX,WASHR AX,CL ;右移4i次,將
31、ai移到最低4位AND AL,0FH ;取aiMOV BA,AL3-9stack segment stack ¢stack¢dw 32 dup(0)stack endsdata segmentW2 DD 8920B094Hdata endscode segmentstart proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axTEST WORD PTR W2+2, 8000H;檢測原碼數(shù)的符號(hào)JZ BAK;正數(shù)的原碼與補(bǔ)碼相同不用再求AND WOR
32、D PTR W2+2,7FFFH;求負(fù)數(shù)的絕對(duì)值NOT WORD PTR W2+2;雙字求補(bǔ)NOT WORD PTR W2ADD WORD PTR W2,1ADC WORT PTR W2+2,0BAK: retstart endpcode endsend start3-10stack segment stack ¢stack¢dw 32 dup(0)stack endsdata segmentX DW 8100HY DW 9420HK DB 0data endscode segmentbegin proc farassume ss: stack, cs: code, ds:
33、 datapush dssub ax, axpush axmov ax, datamov ds, axAND X, 0FFFFH ;根據(jù)X是否為0置ZFJZ K0AND Y, 0FFFFH ;根據(jù)Y是否為0置ZFJZ K0TEST X, 8000H ;測試X的符號(hào)JZ K14 ;X>0去K14TEST Y, 8000H ;X<0測試Y的符號(hào)JZ K2 ;Y>0去K2MOV K, 3RETK2: MOV K, 2RETK0: MOV K, 0RETK14: TEST Y, 8000H ;X>0測試Y的符號(hào)JZ K1 ;Y>0去K1MOV K, 4RETK1: MOV
34、 K, 1retbegin endpcode endsend begin 先賦值再作判別可以減少分支。第一次判X、Y是否為0,為0落在數(shù)軸上K=0;不為0作第二次和第三次判別。第二次判X、Y是否異號(hào),異號(hào)落在2、4象限K=2,同號(hào)落在1、3象限K=1,再作第三次判別,判Y是正數(shù)還是負(fù)數(shù),Y>0,則落在1、2象限;若Y<0,則落在3、4象限,將K加上2。根據(jù)該方法編寫的程序段如下:MOV K,0AND X,0FFFFHJZ BACK ;X=0去BACKAND Y, 0FFFFHJZ BACK ;Y=0去BACKMOV K, 2MOV AX, XXOR AX, YJS K24 ;XY異
35、號(hào),落在2,4象限MOV K,1 ;XY同號(hào),K=1,落在1,3象限K24: CMP Y,0JNS BACK ;Y>0,落在1、2象限ADD K,2 ;Y<0,落在3、4象限K+2 BACK ret3-11stack segment stack ¢stack¢dw 32 dup(0)stack endsdata segmentIBUF DB 9,0,9 DUP(0)data endscode segmentbegin proc farassume ss:stack,cs:code,ds:datapush dsmov ax,0push axmov ax,datam
36、ov ds,axMOV DX,OFFSET IBUFMOV AH,10INT 21HMOV CX, MOV SI,2AG: SHR IBUFSI,1RCL DH,1INC SILOOP AGMOV DL,DHMOV CL,4SHR DL,CLCMP DL,39HJBE NAD71ADD DL,7NAD71: MOV AH,2INT 21HMOV DL,DHAND DL,0FHCMP DL,39HJBE NAD72ADD DL,7NAD72: MOV AH,2INT 21Hretbegin endpcode endsend begi 3-12stack segment stack ¢s
37、tack¢dw 32 dup(0)stack endsdata segmentIBUF DB 5,0,5 DUP(0)data endscode segmentbegin proc farassume ss:stack,cs:code,ds:datapush dsmov ax,0push axmov ax,datamov ds,axMOV DX,OFFSET IBUFMOV AH,10INT 21HMOV CL,IBUF+1MOV CH,0MOV SI,OFFSET IBUF+2 ;指向鍵入的第一個(gè)字符CMP BYTE PTR SI, ¢-¢ ;判是否為負(fù)數(shù)PUS
38、HF ;保護(hù)零標(biāo)志,供轉(zhuǎn)換之后再判別JNE SININC ;正數(shù)跳轉(zhuǎn),去SININCINC SI ;越過“-”號(hào)指向數(shù)字DEC CX ;實(shí)際字符數(shù)少1(“-”號(hào))SININC: MOV AL, 0 ;開始將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)AGAIN: MOV AH, 10 ;(0×10+a4)×10+)×10+a0MUL AHAND BYTE PTR SI, 0FH ;將十進(jìn)制數(shù)的ASCII碼轉(zhuǎn)換為BCD數(shù)ADD AL,SIINC SILOOP AGAINPOPF ;恢復(fù)判斷是否為負(fù)數(shù)時(shí)的零標(biāo)志ZFJNZ NNEG ;非0即為正數(shù),則不求補(bǔ)NEG AL MOV DL,ALM
39、OV DH,ALMOV CL,4SHR DL,CLCMP DL,39HJBE NAD71ADD DL,7NAD71: MOV AH,2INT 21HMOV DL,DHAND DL,0FHCMP DL,39HJBE NAD72ADD DL,7NAD72: MOV AH,2INT 21Hretbegin endpcode endsend begi3-13 stack segment stack ¢stack¢dw 32 dup(0)stack endsdata segmentSW DW 1234HOBUF DB 5 DUP(0)data endscode segmentbegi
40、n proc farassume ss:stack,cs:code,ds:datapush dsmov ax,0push axmov ax,datamov ds,axMOV BX,5MOV OBUFBX,¢$¢MOV CX,10 MOV AX,SWAG: MOV DX,0AND AX,AXJZ SCDIV CXADD DL,30H DEC BXMOV OBUFBX,DL ;ASCII 碼送輸出數(shù)據(jù)區(qū)JMP AGSC: MOV DX,OFFSET OBUFADD DX,BXMOV AH,9INT 21Hretbegin endpcode endsend begin3-14st
41、acksegment stack ¢stack¢dw 32 dup(0)stackendsdatasegmentARRAYW DW 56, -56, 80, -80, 128, -128, 0, 512, NEQU ($ - ARRAYW)/2PLUSDW N DUP(0)MINUSDW N DUP(0)ZERONDW 0dataendscodesegmentstartproc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush xamov ax, datamov ds, axMOV CX, NMOV B
42、X, 0MOV SI, 0MOV DI, 0MOV ZERON, 0AGAIN: MOV AX, ARRAYWBXADD BX, 2AND AX, AX ;根據(jù)AX的值置ZF、SFJZ ZERJS MINMOV PLUSSI, AXADD SI, 2JMP COMMIN:MOV MINUSDI, AXADD DI, 2JMP COMZER:INC ZERONCOM:LOOP AGAINretstartendpcodeendsend start3-15stack segment stack ¢stack¢dw 32 dup (0)stack endsdata segmentO
43、BUF DB 6 DUP(0)data dedscode segmentstart proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV CX, 24-2MOV AX, 0 ;第1項(xiàng)送AXMOV BX, 1 ;第2項(xiàng)送BXAGAIN: ADD AX, BX;第i項(xiàng)和第i+1項(xiàng)相加其和i+2項(xiàng)在AX中XCHG AX, BX;第i+2項(xiàng)和i+1項(xiàng)互換LOOP AGAINMOV AX, BX ;將第24項(xiàng)Fibonacci數(shù)送AXMOV DX,0 ;將第24項(xiàng)Fibo
44、nacci數(shù)擴(kuò)展為32位二進(jìn)制數(shù)MOV SI,0 ;建立OBUF變量數(shù)據(jù)區(qū)的位移指針MOV BX,10000MOV CX,4 ;除法4次的計(jì)數(shù)器AGAIN1: DIV BXADD AL,30H;將商轉(zhuǎn)換為ASCII碼MOV OBUFSI,ALINC SIMOV AX,BX ;將除數(shù)送AXMOV BX,DX ;將余數(shù)即下一次的被除數(shù)送BX暫存MOV DX,0 ;將除數(shù)擴(kuò)展為32位,再除以10,得下一次的除數(shù)MOV BP,10DIV BP ;DX、AX除以BP結(jié)果在AX中,DX一定為0XCHG AX,BX ;將AX中的除數(shù)和BX中的被除數(shù)互換LOOP AGAIN1ADD AL,30H;將十進(jìn)制數(shù)個(gè)
45、位轉(zhuǎn)化為ASCII碼MOV OBUFSI,AL;存入輸出數(shù)據(jù)區(qū)中INC SIMOV OBUFSI,¢$¢MOV DX, OFFSET OBUFMOV AH, 9INT 21Hretstart endpcode endsend start3-16stack segment stack ¢stack¢dw 32 dup(0)stack endsdata segmentBUF DB 255,0,255 DUP(0)data endscode segmentstart proc farassume ss: stack, cs: code, ds: datapus
46、h dssub ax, axpush axmov ax, datamov ds, axMOV DX, OFFSET BUF ;建入一串字符MOV AH, 10INT 21HMOV SI,OFFSET BUT+2 ;SI指向串首MOV BX,SI ;BX指向串尾+1ADD BL,BUF+1 ;串首偏移地址加上鍵入字符個(gè)數(shù)ADC BH,0MOV BYTE PTR BX,¢$¢ ;串尾后送串結(jié)束符DEC BX ;BX指向串尾AGAIN: MOV AL,BX ;字符交換XCHG AL,SIMOV BX,ALDEC BX ;調(diào)整指針I(yè)NC SICMP SI,BX ;兩指針比較JC AGAINMOV BUF+1,0AH ;換行的A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版門樓智能鎖具采購與安裝協(xié)議4篇
- 二零二五年度面粉行業(yè)市場調(diào)研與分析合同7篇
- 2025年度個(gè)人住房抵押貸款利率調(diào)整合同范本4篇
- 建筑施工工人中介合同(2篇)
- 畢業(yè)論文答辯模板
- 項(xiàng)目組人員培訓(xùn)計(jì)劃三篇
- 二零二五年車位購置合同標(biāo)準(zhǔn)文本9篇
- 鍋爐課程設(shè)計(jì)引言
- 2024年中級(jí)電工職業(yè)鑒定考試題庫-上(單選題)
- 2025年度新能源設(shè)備代理商加盟協(xié)議合同4篇
- 2025-2030年中國陶瓷電容器行業(yè)運(yùn)營狀況與發(fā)展前景分析報(bào)告
- 二零二五年倉儲(chǔ)配送中心物業(yè)管理與優(yōu)化升級(jí)合同3篇
- 2025屆廈門高三1月質(zhì)檢期末聯(lián)考數(shù)學(xué)答案
- 音樂作品錄制許可
- 2025年中國誠通控股集團(tuán)限公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 私募股權(quán)投資基金管理公司部門劃分與職責(zé)
- (新版)廣電全媒體運(yùn)營師資格認(rèn)證考試復(fù)習(xí)題庫(含答案)
- 智慧人力引領(lǐng)未來-2024年生成式AI賦能人力資源管理研究報(bào)告
- 拉薩市2025屆高三第一次聯(lián)考(一模)英語試卷(含答案解析)
- 《產(chǎn)業(yè)鏈基礎(chǔ)理論》課件
- 開題報(bào)告:AIGC背景下大學(xué)英語教學(xué)設(shè)計(jì)重構(gòu)研究
評(píng)論
0/150
提交評(píng)論