



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄實(shí)驗(yàn)一數(shù)據(jù)傳送2實(shí)驗(yàn)二算術(shù)運(yùn)算8實(shí)驗(yàn)三代碼轉(zhuǎn)換15實(shí)驗(yàn)四程序的基本結(jié)構(gòu)練習(xí)21實(shí)驗(yàn)五存儲(chǔ)器( RAM 6264 )擴(kuò)展錯(cuò)誤!未定義書簽。實(shí)驗(yàn)六可編程并行接口( 8255)擴(kuò)展錯(cuò)誤!未定義書簽。實(shí)驗(yàn)七可編程計(jì)數(shù) /定時(shí)器( 8253)擴(kuò)展錯(cuò)誤!未定義書簽。實(shí)驗(yàn)八A/D 、D/A 轉(zhuǎn)換錯(cuò)誤!未定義書簽。實(shí)驗(yàn)九可編程串行通信接口( 8251)擴(kuò)展錯(cuò)誤!未定義書簽。實(shí)驗(yàn)一:數(shù)據(jù)傳送實(shí)驗(yàn)學(xué)時(shí): 2實(shí)驗(yàn)類型:驗(yàn)證實(shí)驗(yàn)要求:必修一實(shí)驗(yàn)?zāi)康?學(xué)習(xí)程序設(shè)計(jì)的基本方法和技能,掌握用匯編語(yǔ)言設(shè)計(jì)、編寫、調(diào)試和運(yùn)行程序的方法;學(xué)習(xí)用全屏幕編輯軟件QEDIT.EXE 建立源程序( .ASM 文件);學(xué)習(xí)用匯編軟件
2、MASM.EXE 對(duì)源文件匯編產(chǎn)生目標(biāo)文件( .OBJ 文件);學(xué)習(xí)用連接程序 LINK.EXE 對(duì)目標(biāo)文件產(chǎn)生可執(zhí)行文件( .EXE 文件);學(xué)習(xí)用調(diào)試軟件 TD.EXE 調(diào)試可執(zhí)行文件;2掌握各種尋址方法以及簡(jiǎn)單指令的執(zhí)行過程。二實(shí)驗(yàn)器材PC 機(jī)三實(shí)驗(yàn)組織運(yùn)行要求1利用堆棧實(shí)現(xiàn) AX 的內(nèi)容與 BX 的內(nèi)容進(jìn)行交換。 堆棧指針 SP=2000H, AX=3000H , BX=5000H ;2匯編、調(diào)試、觀察、記錄結(jié)果;用 QEDIT.EXE 軟件輸入?yún)R編語(yǔ)言源程序,以 .ASM 格式文件存盤;用 MASM 對(duì)源程序進(jìn)行匯編產(chǎn)生二進(jìn)制目標(biāo)文件( .OBJ 文件),再用連接程序 LINK 產(chǎn)生
3、可執(zhí)行文件( .EXE 文件);用調(diào)試軟件 TD 調(diào)試、運(yùn)行程序,觀察、記錄結(jié)果。四實(shí)驗(yàn)步驟1進(jìn)入子目錄 E:>SY86 后,利用 QEDIT.EXE(簡(jiǎn)稱 Q)送入以下匯編語(yǔ)言源程序,并以 M1.ASM 文件存盤匯編語(yǔ)言程序的上機(jī)過程進(jìn)入 SY86 子目錄E:>CDSY86E: SY86>進(jìn)入 QEDIT.EXE 編輯界面E: SY86> Q輸入文件名 *.ASM (如 M1.ASM )后,輸入源程序源程序DATASEGMENT PARAPUBLIC?DATA?;數(shù)據(jù)段定義DB512DUP(0)DATAENDSSTACK SEGMENT PARA STACK?STAC
4、K?;堆棧段定義DB512DUP( ?)STACK ENDSCODE SEGMENT PARA PUBLIC?CODE?;代碼段定義ASSUME CS :CODE,DS :DATA,ES:DATA,SS :STACKMAINPROC FAR;定義過程程序PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXMOVSP,2000hMOVAX,3000hMOVBX,5000hPUSHAXPUSHBXPOPAXPOPBXRETMAINENDP;結(jié)束主要部分程序CODEENDS;結(jié)束代碼段ENDMAIN;結(jié)束匯編用 MASM 程序產(chǎn)生 .OBJ 文件操作如下:E:S
5、Y86> MASMM1.ASMM1.OBJMicrosoft (R) Macro Assembler Version 5.00Copyright( C) Microsoft Corp 1981-1985,1987.All rights reserved.Object FilenameHEXASC.OBJ :Source listing NUL.LST Cross-reference NUL.CRF:51576+385928 Bytes symbol space free0 Warning Errors0 SevereErrors以上說明匯編過程已經(jīng)完成。用 LINK 程序產(chǎn)生 EXE 文
6、件操作如下:E: SY86>LINKM1.OBJMicrosoft (R) Overlay Linker Version 3.60Copyright( C) Microsoft Corp 1983-1987.All rights reserved.Run FileList FileM1.EXE :NUL.MAP :Libraries.LIB :E: SY86>LINK 程序輸出 3 個(gè)文件: .EXE 文件; .LIB 庫(kù)文件; .MAP 列表文件。連接過程全部完成,可以執(zhí)行程序;在 TD 狀態(tài)下用單步運(yùn)行F8 對(duì) M1.EXE 文件進(jìn)行調(diào)試,觀察、記錄結(jié)果。E: SY86>
7、TD進(jìn)入 TD 調(diào)試軟件后 用單步執(zhí)行 F8 命令從首地址開始執(zhí)行指令并觀察相應(yīng)變化。運(yùn)行結(jié)果 如下:F8AX=0000 BX=0000 CX=000D DX=0000 SP=2000 BP=0000 SI=0000 DI=0000 DS=17F7 ES=17F7 SS=17F7 CS=17F7 IP=0103 NV UP DI PL NZ NA PONC17F7:0103B80030MOVAX,3000F8AX=3000 BX=0000 CX=000D DX=0000 SP=2000 BP=0000 SI=0000 DI=0000DS=17F7 ES=17F7 SS=17F7CS=17F7
8、IP=0106NV UP DI PL NZ NAPO NC17F7:0106BB0050MOVBX,5000F8AX=3000 BX=5000 CX=000D DX=0000 SP=2000 BP=0000 SI=0000 DI=0000DS=17F7 ES=17F7 SS=17F7CS=17F7 IP=0109NV UP DI PL NZ NAPO NC17F7:010950PUSHAXF8AX=3000 BX=5000 CX=000D DX=0000 SP=1FFE BP=0000 SI=0000 DI=0000 DS=17F7 ES=17F7 SS=17F7 CS=17F7 IP=010
9、A NV UP DI PL NZ NAPO NC17F7:010A53PUSHBXF8AX=3000 BX=5000 CX=000D DX=0000 SP=1FFC BP=0000 SI=0000 DI=0000DS=17F7 ES=17F7 SS=17F7CS=17F7 IP=010BNV UP DI PL NZ NAPO NC17F7:010B58POPAXF8AX=5000 BX=5000 CX=000D DX=0000 SP=1FFE BP=0000 SI=0000 DI=0000DS=17F7 ES=17F7 SS=17F7CS=17F7 IP=010CNV UP DI PL NZ
10、NAPO NC17F7:010C5BPOPBXF8AX=5000 BX=3000 CX=000D DX=0000 SP=2000 BP=0000 SI=0000 DI=0000DS=17F7 ES=17F7 SS=17F7CS=17F7 IP=010DNV UP DI PL NZ NAPO NC17F7:010DF4HLT2用以上同樣的方法,完成下列程序的調(diào)試:編輯、匯編、連接、運(yùn)行程序,觀察、記錄結(jié)果。輸入以下匯編程序(分號(hào) “; ”后面內(nèi)容不需輸入)用單步運(yùn)行執(zhí)行程序,按分號(hào)后的要求記錄結(jié)果。源程序DATASEGMENT PARA PUBLIC ,DATA?DATAENDSSTACKSEG
11、MENT PARA STACK ,STACK?DB512 DUP (?)STACKENDSCODESEGMENT PARA PUBLIC ,CODE?ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART PROC FARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXMOVAX,2000H;AH=20HMOVDS,AX;AL=00HDS=2000HMOVSS,AX;SS=2000HAX=2000HMOVBX,2030H;BH=20HBL=30HMOVSI,BX;SI=2030HMOVDI,3040H;DI=3040H
12、MOVSI,DI;SI=3040HMOVSP,50FFH;SP=50FFHMOVDX,SP;DH=50HDL=0FFHMOVCL,25;CL=25(19H)MOVBL,CL;CL=19HBL=19HMOVAH,0F0H;AH=0F0HMOVCH,AH;CH=0F0HMOVBYTE PTRDI,64;(DI)=40HMOVWORD PTRSI,256;(SI)=00H(SI+1)=01HMOVDL,SI+1;DL=01HMOVDH,1+SI;DH=01HMOVAL,1SI;AL=01HMOVWORD PTRBXSI,34;(BX+SI)=22H(BX+SI+1)=00HMOVBX+SI+4,BL
13、;(BX+SI+4)=19HMOVBP,2BX+DI;BP=0100HMOVBP,AL;(BP)=01HMOVAX,BPDI;AX=8B00HMOVBL,AL;BL=00HMOVES,BX;ES=2000HPUSHBX;SP=50FDH(SP,SP+1)=2000HPUSHDI;SP=50FBH(SP,SP+1)=3040HPOPCX;SP=50FDHCX=3040HPOPDX;SP=50FFHDX=2000HXCHGAX,BP;AX=0101HBP=8B00HXCHGDH,BL;DH=00HBL=20HLAHF;FLAG=NV UP DI PL NZ NA PO NC;FLAG=000000
14、00;AH=02HSAHF;FLAG=NV UP DI PL NZ NA PO NC;FLAG=00000000;AH=02HPUSHF;SP=50FDH(SP,SP+1)=3102HPOPF;SP=50FDH;FLAG= NV UP DI PL NZ NA PO NC;FLAG=00000000NOPSTART ENDPCODEENDSENDSTART以文件名 “E2”存盤;單步運(yùn)行程序,每運(yùn)行一條指令即檢查相應(yīng)結(jié)果并予以記錄;利用斷點(diǎn)運(yùn)行、跟蹤運(yùn)行和全速運(yùn)行等功能調(diào)試程序、運(yùn)行程序并檢查結(jié)果。 運(yùn)行結(jié)果:各寄存器及內(nèi)存變化如上。五思考題常用的數(shù)據(jù)傳送指令有幾種類型?試歸納并舉例說明。答:常
15、用的數(shù)據(jù)傳送指令有四種類型:1.通用數(shù)據(jù)傳送指令MOV OPRD1 ,OPRD2例: MOV AX ,2000H;AX=2000H壓棧指令 出棧指令 例: PUSH AXPUSH OPRDPOP OPRD;SP=SP-2,(SP,SP+1)=AXPOP AX;AX=(SP,SP+1),SP=SP+2交換指令 XCHG PORD1, OPRD2例: MOV AX,02FFHMOV BP,0001HXCHG AX,BP;AX=0001H , BP=02FFH2.累加器專用傳送指令輸入、輸出指令 IN 、 OUT例: IN AX ,DX;AX=( DX+1, DX)OUT DX , AX;( DX+
16、1, DX) =AX換碼指令 XLAT例: XLAT;AL=(BX+AL)3.地址傳送指令 LEA REG,SRC有效地址送寄存器例: LEA SI ,DAT1;SI=ADDR(DAT1)指針?biāo)?DS 和寄存器 LDS REG,SRC例: LDS DI ,BX;DI=(DS ×16+BX) , DS=(DS× 16+BX+2)指針?biāo)?ES 和寄存器 LES REG, SRC例: LES DI ,BX;DI=(DS ×16+BX) , ES=(DS×16+BX+2)4.標(biāo)志寄存器傳送指令標(biāo)志傳送指令例: LAHF;AHPS W 的低字節(jié)SAHF;PSW 的
17、低字節(jié) AH標(biāo)志進(jìn)、出棧例: PUSHF;SPSP-2, (SP+1,SP)PSWPOPF;PSW (SP+1,SP),SP SP+2實(shí)驗(yàn)二:算術(shù)運(yùn)算實(shí)驗(yàn)學(xué)時(shí): 2實(shí)驗(yàn)類型:設(shè)計(jì)實(shí)驗(yàn)要求:必修一實(shí)驗(yàn)?zāi)康?驗(yàn)證算術(shù)運(yùn)算基本指令;2正確使用加、減、乘、除程序,為設(shè)計(jì)綜合算術(shù)運(yùn)算程序打好基礎(chǔ);3學(xué)習(xí)獨(dú)立編程;4深入學(xué)習(xí)、掌握TD 調(diào)試軟件的使用方法。二實(shí)驗(yàn)器材PC 機(jī)三實(shí)驗(yàn)內(nèi)容及步驟1加、減法運(yùn)算要求調(diào)試以下程序源程序DATASEGMENT PARAPUBLIC ,DATA?DATAENDSSTACKSEGMENT PARASTACK ,STACK?DB512 DUP (?)STACKENDSCOD
18、ESEGMENT PARAPUBLIC ,CODE?ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTARTPROC FARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXMOVAX,2040H;AH=20H, AL=40H , CF=0ADDAL,AH;AH=20H, AL=60H , CF=0MOVCX,257;CX=0101H ,CF=0MOVSI,AX;SI=2060H,SUBSI,CX;SI=1F5FH,CX=010H, CF=0SUBCH,CL;CH=00H,CL=01H, CF=0ADCAX,CX;AX=2
19、061H ,CX=0001H, CF=0MOVWORD PTR SI,513;(SI,SI+1)=0201HADCSI,AL;(SI,SI+1)=0262H, CF=0SBBAX,SI;AX=1DFFH ,CF=0INCBYTE PTR SI+1;(SI,SI+1)=0362HDECBYTE PTR SI;(SI,SI+1)=0361HDAA;AH=1DH , AL=65H , AF=1,CF=1AAA;AH=1EH , AL=0BH , AF=1,CF=1RETSTARTENDPCODEENDSENDSTART 運(yùn)行結(jié)果:各寄存器及內(nèi)存數(shù)據(jù)如上。2加、減法程序設(shè)計(jì)要求試設(shè)計(jì)、編寫程序,計(jì)算
20、(UP1)+(UP2)- (UP3),結(jié)果存放在 DX 中。如 25+48- 19=?其中 UP1、UP2、UP3 的內(nèi)容均為二位十進(jìn)制數(shù), 并以非壓縮 BCD 碼格式存入存儲(chǔ)器:(UP1)= 0205H,(UP2)= 0408H,(UP3)= 0109HUP1 = 2050H,UP2 = 2150H, UP3 =2250H源程序DATASEGMENTPARAPUBLIC ,DATA?DATAENDSSTACKSEGMENTPARASTACK ,STACK?DB512 DUP (?)STACKENDSCODESEGMENT PARAPUBLIC ,CODE?ASSUME CS:CODE,DS:
21、DATA,ES:DATA,SS:STACKSTARTPROC FARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXMOVAX,0000MOVDX,0000MOVSI,2050HMOVDI,2150HMOVBP,2250HMOVWORDPTRSI,0205HMOVWORDPTRDI,0408HMOVWORD PTRBP,0109HMOVAL,SI;送被加數(shù)低 8 位ADDAL,DI;低 8 位相加AAA;加法 ASCII 調(diào)整MOVDL,AL;暫存MOVAL,SI+1;送被加數(shù)高 8 位ADCAL,DI+1;帶進(jìn)位加AAA;加法 ASCII 調(diào)整XCH
22、GAL,DL;AL 與 DL 交換SUBAL,BP;和的低 8 位減減數(shù)的低8 位AAS;減法 ASCII 調(diào)整XCHGAL,DL;AL 與 DL 交換,存低 8 位結(jié)果SBBAL,BP+1;高 8 位帶進(jìn)位減AAS;減法 ASCII 調(diào)整MOVDH,AL;存高 8 位結(jié)果RETSTART ENDPCODE ENDSENDSTART 運(yùn)行結(jié)果: DX=0504H3乘法程序設(shè)計(jì)要求:試設(shè)計(jì)、編寫程序,計(jì)算(A) ×(B) 。A 、 B 表示內(nèi)存單元,分別存放著二個(gè)用非壓縮 BCD 碼表示的十進(jìn)制數(shù) (如 34、56)。內(nèi)存單元 (A)=04H ,(A 1)=03H,內(nèi)存單元 (B)=0
23、6H ,(B 1)=05H,計(jì)算結(jié)果應(yīng)為非壓縮的BCD 碼表示的十進(jìn)制數(shù),存放在以 C 為首地址的4 個(gè)連續(xù)內(nèi)存字節(jié)單元中。設(shè)內(nèi)存單元A=2200H、B=2220H、 C=2240H;源程序DATASEGMENTPARAPUBLIC ,DATA?DATAENDSSTACKSEGMENTPARASTACK ,STACK?DB512 DUP (?)STACKENDSCODESEGMENT PARAPUBLIC ,CODE?ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTARTPROC FARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AX
24、MOVES,AXMOVAX,0MOVBX,0MOVDI,223AHMOVSI,2230HMOVAL,04H;被乘數(shù)低 8 位送 ALMOVBL,06H;乘數(shù)低 8 位送 BLMUL BL;相乘, AL=18H ,CF=0AAM;調(diào)整, AH=02H ,AL=04HMOV WORD PTR DI,AX;存結(jié)果, (DI , DI +1)= 04H ,02HMOV AL,03H;被乘數(shù)高 8 位送 ALMUL BL;被乘數(shù)高 8 位乘以乘數(shù)低 8 位,AL=12H ,CF=0AAM;調(diào)整, AH=01H ,AL=08HADD AL,DI+1;部分積相加, AL=0AHAAA;調(diào)整, AH=02H
25、,AL=00H ,AF=1 ,CF=1MOV WORD PTR DI+1,AX;存結(jié)果, (DI +1,DI +2)= 00H , 02HMOV AL,04H;被乘數(shù)低 8 位送 ALMOV BL,05H;乘數(shù)高 8 位送 BLMUL BL;相乘, AL=14HAAM;調(diào)整, AH=02H ,AL=00HMOV WORD PTRSI,AX;存結(jié)果, (SI,SI +1)= 00H,02HMOV AL, 03H;被乘數(shù)高 8 位送 ALMUL BL;被乘數(shù)高 8 位乘以乘數(shù)高 8 位, AL=0FHAAM;調(diào)整, AH=01H ,AL=05HADD AL,SI+1;部分積相加, AL=07HAA
26、A;調(diào)整, AH=01H ,AL=07H ,AF=0 ,CF=0MOV WORD PTR SI+1,AX;存結(jié)果, (SI+1,SI +2)= 07H, 01HMOV AL,DI;AL=04HMOV BP,2240H;乘積首址 2240HMOV BP,AL;存積低位, (2240H)=04HMOV AL,DI+1ADD AL.SI+1AAA;調(diào)整, AH=01H ,AL=00H ,AF=0 ,CF=0MOV BP+1,AL;存積低位加 1,(2241H)=00HMOV AL,DI+2;AL=02HADC AL,SI+1;AL=09H ,AF=0, CF=0AAA;調(diào)整, AH=01H ,AL=
27、09HMOV BP+2,AL;存積低位加 2,(2242H)=09HMOV AL,0ADC AL,SI+2;AL=01H ,AF=0, CF=0AAA;調(diào)整, AH=01H ,AL=01HMOV BP+3,AL;存積高位, (2243H)=01HRETSTART ENDPCODE ENDSENDSTART 運(yùn)行結(jié)果: (2243H)=01H,(2242H)=09H,(2241H)=00H,(2240H)=04H ;積=1904H4除法程序設(shè)計(jì)(選做)要求試設(shè)計(jì)、編寫程序,計(jì)算 (A) (B) ,A 、B 表示內(nèi)存單元,數(shù)據(jù)自定。其中除數(shù) (B) 是 16 位十六進(jìn)制數(shù), 存放在 BX 中;被除
28、數(shù) (A)是 32 位十六進(jìn)制數(shù), 高 16 位存放在 DX ,低 16 位存放在 AX 中;結(jié)果為 32 位十六進(jìn)制數(shù)的商存放在 BX :AX 中; 16 位十六進(jìn)制余數(shù)存放在 DX 中。設(shè)置數(shù)據(jù)時(shí)如果除數(shù)等于零或者商大于16 位,則應(yīng)考慮溢出處理。源程序(避免溢出的除法程序)STACKSEGMENT PARA STACK 'STACK'DW 32 DUP(0)STACK ENDSDATASEGMENT PARA 'DATA'DATAENDSCODESEGMENT PARA 'CODE'ASSUME CS:CODE,DS:DATA,SS:STA
29、CKDIVUOPROC FARPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AX,1FCDH;被除數(shù)低 16 位MOV DX,3B78H;被除數(shù)高 16 位MOV BX,7C9AH;16 位除數(shù)CMP BX,0;除數(shù) =0?JNZ DVROK;不為零,轉(zhuǎn)DIV BX;為零,除JMP SHORT GO_DOSDVROK:PUSH ESPUSH DIPUSH CXMOV DI,0;取出當(dāng)前的 INT 0 向量并保存之MOV ES,DIPUSH ES:DIPUSH ES:DI+2LEA CX,OVR_INT;獲得 INT 0 向量MOV ES:DI,CX
30、MOV CX,SEG OVR_INTMOV ES:DI+2,CXDIV BX;做除法SUB BX,BXRESTORE:POP ES:DI+2;恢復(fù)INT 0向量POP ES:DIPOP CXPOP DIPOP ESGO_DOS:RETOVR_INT:POP CXLEA CX,RESTOREPUSH CXPUSH AXMOV AX,DXSUB DX,DXDIV BXPOP CXPUSH AXMOV AX,CXDIV BXPOP BXIRETDIVUO ENDPCODEENDSENDDIVUO 運(yùn)行結(jié)果:商 BX:AX=7A2EH ,余數(shù) DX=5821H程序流程框圖開始放除數(shù)、被除數(shù)除數(shù)為 0?
31、YNINT0 中斷做除法Y有溢出?INT0 中斷N轉(zhuǎn) OVR-INT 處理結(jié)束四思考題1若對(duì)兩個(gè)帶符號(hào)的雙精度數(shù)作加、減法運(yùn)算,該怎樣處理。答:如果對(duì)兩個(gè)帶符號(hào)的雙精度數(shù)作加、減法運(yùn)算,則運(yùn)算應(yīng)按照帶符號(hào)的加、減法考慮。2在編寫乘法程序時(shí),若 (B)是一個(gè)帶符號(hào)非壓縮的 BCD 碼,則程序應(yīng)該怎樣編寫。答:如果乘數(shù)是一個(gè)帶符號(hào)非壓縮的 BCD 碼,則運(yùn)算應(yīng)按照帶符號(hào)的乘法考慮。首先保存被乘數(shù)和乘數(shù)的符號(hào)位,正常運(yùn)算后,在結(jié)果加上符號(hào)位。實(shí)驗(yàn)三:代碼轉(zhuǎn)換實(shí)驗(yàn)學(xué)時(shí): 2實(shí)驗(yàn)類型:設(shè)計(jì)實(shí)驗(yàn)要求:必修一實(shí)驗(yàn)?zāi)康?設(shè)計(jì)常見的代碼轉(zhuǎn)換程序,通過實(shí)際操作,調(diào)試并檢驗(yàn)所設(shè)計(jì)程序的正確性;2提高獨(dú)立編程的能力。
32、二實(shí)驗(yàn)器材PC 機(jī)三實(shí)驗(yàn)內(nèi)容1十六進(jìn)制數(shù) ASCII 碼要求:試設(shè)計(jì)、編寫程序,將一個(gè)十六進(jìn)制數(shù) 0FBE9H 轉(zhuǎn)換為 ASCII 碼并在屏幕上顯示出來。源程序NAMEHEXASCDATASEGMENT PARA PUBLIC 'DATA'HEXDW 0EBF9HASCDB 20 DUP(0)DATAENDSSTACKSEGMENT PARA STACK 'STACK'DB512 DUP (?)STACKENDSCODESEGMENT PARA PUBLIC 'CODE'PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV D
33、S,AXMOV ES,AXMOV CX,0004HMOV AX, HEX;取十六進(jìn)制數(shù) 0EBF9HLEA BX,ASCAA:PUSH CXMOV CL,04H;給循環(huán)計(jì)數(shù)器賦轉(zhuǎn)換代碼長(zhǎng)度ROL AX,CL;十六進(jìn)制數(shù)循環(huán)左移PUSH AXASCII:AND AX,000FHCMP AL,0AHJB ASCIIADD AL,07HADD AL,30HMOV DH,ALMOV CL,04HSHR DH,CLMOV DL,ALAND DX,0F0FHOR DX,3030HMOV BX,DHINC BXMOV BX,DLINC BXPOP AXPOP CXLOOP AA;判別是否為 “ 09”;是
34、“ 09轉(zhuǎn)” ASCII;給循環(huán)計(jì)數(shù)器賦轉(zhuǎn)換代碼長(zhǎng)度;邏輯右移;(BX)=46H,(BX)=42H,(BX)=45H, (BX)=39H,MOV AL,'$'MOV BX,ALMOV AH,09HLEA DX,ASCINT 21HRETSTARTENDPCODEENDSEND START 在 TD 狀態(tài)下分別用單步執(zhí)行、 全速運(yùn)行對(duì) HEXASC.EXE 文件進(jìn)行調(diào)試、運(yùn)行,結(jié)果正確; 在 DOS 狀態(tài)下運(yùn)行可執(zhí)行文件HEXASC.EXE ,結(jié)果正確。屏幕顯示:45424639。2ASCII 碼 BCD 碼要求:試設(shè)計(jì)、編寫程序,完成以下功能。設(shè)有一組 ASCII 碼數(shù)據(jù):33
35、32H,3537H,3946H,3239H,3642H, ,存放在起始地址為 DS:150H 的連續(xù)內(nèi)存單元內(nèi),數(shù)組長(zhǎng)度存入 CX 。經(jīng)過轉(zhuǎn)換后的 BCD 碼存放在起始地址為 DS:160H 的連續(xù)內(nèi)存續(xù)單元內(nèi),如果待轉(zhuǎn)換的數(shù)據(jù)不是十進(jìn)制數(shù)的 ASCII 碼,則對(duì)應(yīng)的結(jié)果單元存放 “0FFH”。源程序NAME ASCBCDDATA SEGMENT PARA PUBLIC'DATA'ORG0150HDATA1 DW 3332H,3537H,3946H,3239H,3642HORG0160HDB10DUP(?)DATAENDSSTACKSEGMENT PARA STACK'
36、STACK'DB512 DUP(?)STACKENDSCODE SEGMENT PARA PUBLIC'CODE'ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART PROC FARPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,0AH;循環(huán)計(jì)數(shù)器賦轉(zhuǎn)換代碼數(shù)組長(zhǎng)度LEA DI,DATA1;ASCII 首址送 DILEA SI,DATA2;BCD 首址送 SIBB:MOV BL,0FFH;錯(cuò)誤標(biāo)志 BLMOV AL,DI;ASCII 碼送 ALCMP AL,3AH;
37、檢查是否為大于 9 的 ASCII 碼JNB DONE;是轉(zhuǎn) DONESUB AL,30H;不是,取 ASCII 碼低 4 位JB DONE;小于 0 的十進(jìn)制數(shù),轉(zhuǎn) DONEMOV BL,AL;BCD 碼送 BLDONE:MOV AL,BL;錯(cuò)誤標(biāo)志或結(jié)果送 ALMOV SI,AL;轉(zhuǎn)換結(jié)果送 BCD 數(shù)據(jù)區(qū)INC DIINC SILOOP BB;(CX) 不為 0,轉(zhuǎn) BBRETSTARTENDPCODEENDSEND START 運(yùn)行結(jié)果:從 DS:160H 開始的連續(xù)內(nèi)存單元的BCD 碼數(shù)據(jù)為:02, 03,07,05, 0FF,09, 09,02,0FF,06, 。程序流程框圖開始A
38、SCII 首址送 DIBCD 首址送 SI數(shù)組長(zhǎng)度送CX取待轉(zhuǎn)換數(shù)Y 待轉(zhuǎn)換數(shù) >39H ?置錯(cuò)誤標(biāo)志0FFHN待轉(zhuǎn)換數(shù)減30H存轉(zhuǎn)換結(jié)果NCX - 1=0?YSI SI+1結(jié)束DI DI+13BCD 碼 二進(jìn)制要求:試設(shè)計(jì)、編寫程序,完成以下功能。 有一組非壓縮的 BCD 碼數(shù)據(jù)存放在起始地址為 DS:180H 的連續(xù)內(nèi)存單元內(nèi),數(shù)組長(zhǎng)度存入 CX 。經(jīng)過轉(zhuǎn)換后的二進(jìn)制數(shù)存放在起始地址為 DS:190H 的連續(xù)內(nèi)存單元內(nèi)。非壓縮的 BCD 碼數(shù)據(jù)如下:0802, 0103, 0009, 0706, 0407, 。源程序NAMEBCD2DATASEGMENTORG0180HDAT1DW
39、0802H,0103H,0009H,0706H,0407HORG0190HDAT2DB 10 DUP(?)DATAENDSSTACKSEGMENTPARASTACK'STACK'DB512DUP(?)STACKENDSCODESEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START PROC FARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXMOV CX,05H;循環(huán)計(jì)數(shù)器賦轉(zhuǎn)換代碼長(zhǎng)度LEADI,DAT1;BCD 碼首址送 DILEASI,DAT2;二進(jìn)制首址送 SIXL: MOVAL,DI+1;BCD 碼十位數(shù)值賦 ALMOVBL,0AHMULBL;乘 10INCDIMOVAH,00HADDAX,DI;BCD 碼十位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年平頂山職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2019-2024歷年真題考點(diǎn)試卷含答案解析
- 細(xì)胞抗衰課程介紹
- 2025年寧波衛(wèi)生職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年天津?yàn)I海職業(yè)學(xué)院高職單招(數(shù)學(xué))歷年真題考點(diǎn)含答案解析
- 2025年天津工程職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2019-2024歷年真題考點(diǎn)試卷含答案解析
- 27341培訓(xùn)課件教學(xué)課件
- 創(chuàng)意福字課程介紹
- 人教版數(shù)學(xué)六年級(jí)下冊(cè)第4、5單元比例廣角-鴿巢問題測(cè)試題含答案
- 華東交通大學(xué)《鋼琴伴奏實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 5G知識(shí)課件教學(xué)課件
- 2025年江蘇蘇北四市高三一模高考地理試卷試題(含答案詳解)
- 《石油化工金屬管道工程施工質(zhì)量驗(yàn)收規(guī)范2023版》
- 2024年度餐廳與旅行社旅游服務(wù)定制化合同3篇
- 腸梗阻業(yè)務(wù)學(xué)習(xí)
- 電梯故障代碼表
- 地方導(dǎo)游基礎(chǔ)知識(shí)電子教案 專題七 學(xué)習(xí)情境三 寧夏回族自治區(qū)課時(shí)教案
- 景區(qū)旅游安全風(fēng)險(xiǎn)評(píng)估報(bào)告
- 中科曙光公司在線測(cè)評(píng)題
- 消防演練課件教學(xué)課件
- 桂圓(2023年廣東中考語(yǔ)文試卷記敘文閱讀題及答案)
- 2024年中考道德與法治時(shí)政熱點(diǎn)復(fù)習(xí):“人工智能”(含練習(xí)題及答案)
評(píng)論
0/150
提交評(píng)論