东华大学信息学院微机实验报告.doc

上传人:仙人指路1688 文档编号:3427188 上传时间:2023-03-13 格式:DOC 页数:45 大小:1.01MB
返回 下载 相关 举报
东华大学信息学院微机实验报告.doc_第1页
第1页 / 共45页
东华大学信息学院微机实验报告.doc_第2页
第2页 / 共45页
东华大学信息学院微机实验报告.doc_第3页
第3页 / 共45页
东华大学信息学院微机实验报告.doc_第4页
第4页 / 共45页
东华大学信息学院微机实验报告.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《东华大学信息学院微机实验报告.doc》由会员分享,可在线阅读,更多相关《东华大学信息学院微机实验报告.doc(45页珍藏版)》请在三一办公上搜索。

1、目录实验一 基本程序编程和程序调试1一、实验目的1二、实验设备1三、实验内容及步骤1四、思考题7五、实验总结9实验二 程序设计和PC机上程序调试操作实验9一、实验目的9二、实验设备9三、实验内容及步骤9实验三 DOS系统功能调用及模块化程序设计23一、实验目的23二、实验设备24三、实验内容及步骤24四、思考题:33五、实验总结34实验四 教材第4章习题程序设计34实验一 基本程序编程和程序调试一、 实验目的二、 实验设备三、 实验内容及步骤数码转换程序及其调试1、 将ASCII码表示的十进制数转换为二进制数1) 程序设计算法2) 实验步骤3)代码 4)程序流程图地址(H) 助记符 注释200

2、0 MOV SI,3500 ;源地址2003 MOV DI,3510 ;结果地址2006 MOV BX,000A ;乘数 102009 MOV CX,0004 ;计数200C MOV AH,00 ;AH 清零200E MOV AL,SI ;取被转换数2010 SUB AL,30 ;ASCII码变十进制数2012 IMUL BX ;高位(AX)*(BX)送AX2014 ADD AL,SI+01 ;取下一位1017 SUB AL,30 ;ASCII码减30变十进制数2019 INC SI ;源地址指针+1201A LOOP 2012 ;CX-1,若CX不等于零则继续201C MOV DI,AX ;

3、若CX等于零则存结果201E INT 3 图1-15)运行结果2 将十进制数的ASCII码转换为BCD码1) 程序设计算法2) 实验步骤3) 代码 4)程序流程图地址(H) 助记符 注释2000 MOV CX,0005;循环计数器赋初值2003 MOV DI,3500;ASCII码首址2006 MOV BL,FF; 错误标志送BL2008 MOV AL,DI;送ASCII码至AL200A CMP AL,3A; 比较AL与3AH200C JNB 2014; 不低于3A则转2014200E SUB AL,30; 低于3A则取ASCII码的低四位2010 JB 2014; 低于30则转2014201

4、2 MOV BL,AL; 否则AL内容送BL,取代FF2014 MOV AL,BL; 结果或错误标志送AL2016 MOV DI+0A,AL2019 INC DI201A LOOP 2006201C INT 3图1-25) 运行结果:3 将十六位二进制数转换为ASCII码表示的十进制数1)程序设计算法2)实验步骤3) 代码 4)程序流程图地址(H) 助记符 注释2000 MOV DX,3500;取二进制数2004 MOV SI,3515; 目标首址在35102007 DEC SI2008 MOV AX,DX200A MOV DX,0000200D MOV CX,000A 2010 DIV CX

5、; ; 除102012 XCHG AX,DX2014 ADD AL,302016 MOV SI,AL2018 CMP DX,0000201B JNE 2007201D CMP SI,3510 ; 填余下高位为02021 JZ 202A; 2023 DEC SI2024 MOV AL,302026 MOV SI,AL2028 JMP 201D202A INT 3图1-35) 运行结果4、 十六进制数转换为ASCII码1)程序设计算法2)实验步骤3) 代码 4) 程序流程图地址(H) 助记符 注释2000 MOV CX,00042003 MOV DI,35002006 MOV DX,DI2008

6、MOV AX,DX200A AND AX,000F ;取低四位值200D CMP AL,0A; ; 判是否“0”-“9”200F JB 2013 ; 是“0”-“9”转20132011 ADD AL,07; 是“A”-“F”,加72013 ADD AL,30; 转换为ASCII码2015 MOV DI+0A,AL2018 INC DI2019 PUSH CX ;保护循环计数器内容201A MOV CL,04; 移位次数送CL201C SHR DX,CL201E POP CX201F LOOP 20082021 INT 3图1-45)运行结果4 BCD码转换为二进制数 1) 程序设计算法2) 实

7、验步骤3)代码 4)程序流程图地址(H) 助记符 注释2000 MOV CX,00042003 MOV DI,35002006 MOV AL,DI2008 ADD AL,AL ;乘2200A MOV BL,AL200C ADD AL,AL ;乘2200E ADD AL,AL ;乘22010 ADD AL,BL ;乘102012 INC DI2013 MOV AH,002015 ADD AL,DI; BCD码十位与个位加2017 MOV DI+0F,AX;存结果 201A INC DI201B LOOP 2006201D INT 3 图1-55)运行结果 四、 思考题1、 2、3、4、1)ASC

8、II码十六进制代码: 运行结果2) 十进制小数二进制3)二进制BCD码五、 实验总结实验二 程序设计和PC机上程序调试操作实验一、 实验目的二、 实验设备三、 实验内容及步骤(一)按要求编写程序并在DEBUG下建立、汇编和调试程序、 四字节二进制数的加法1)程序设计要求2)实验步骤代码:MOV SI,3500 ;源地址MOV DI,3508 ;目的地址MOV AX,SI ;取低两位运算ADC AX,SI+4MOV DI,AXPUSHF;将上一次加法运算后的标志位结果入栈ADD SI,2ADD DI,2POPF ;出栈MOV AX,SI ;取高两位运算ADC AX,SI+4 ;带进位加法MOV

9、DI,AXINT 3 运行结果:2、数据块的搬移1)程序设计思想和要求)实验步骤3) 代码:(1)源数据块与目的数据块无重叠 MOV SI,3500 MOV DI,3510 MOV CX,10 ;循环16次2009: MOV AL,SI MOV DI,AL INC SI INC DILOOP 2009INT 3运行结果:(2)源数据块与目的数据块有重叠。源数据块首地址大于目的数据块 代码:MOV SI,3505 MOV DI,3500 MOV CX,10 ;循环16次2009: MOV AL,SI MOV DI,AL INC SI INC DI LOOP 2009 INT 3运行结果:目的数据

10、块首址大于源数据块首址MOV SI,3500 MOV DI,3505 MOV CX,10 ;循环16次2009: MOV AL,SI+F MOV DI+F,AL DEC SI ;地址指针递减 DEC DI LOOP 2009 INT 3运行结果:3、无序数据块的递增排序)程序设计思想和要求)实验步骤代码:2000 MOV SI,3500 ;指定循环次数 2003 MOV DI,3000 2006 MOV CX,SI 2008 DEC CX 2009 PUSH CX200A MOV BX,0000 200D MOV AL,DI+BX 200F CMP AL,DI+BX+1 2012 JA 201

11、B2014 INC BX 2015 LOOP 200D 2017 POP CX 2018 LOOP 2009 201A INT 3 201B MOV AH,DI+BX+1 201E MOV DI+BX+1,AL 2021 MOV DI+BX,AH 2023 JMP 2014运行结果:4、求数的平方根)程序设计思想和要求)实验步骤代码:2000 MOV SI,40062003 MOV DI,40172006 MOV CX,00042009: MOV BX,0001200C MOV DX,0000200F MOV AH,SI2011 MOV AL,SI+12014 CMP AX,00002017

12、JE 20282019 SBB AX,BX201B CMP AX,0000201E JLE 20272020 INC BX2021 INC BX2022 INC DX2023 CMP AX,BX2025 JA 20192027 INC DX2028 MOV DI,DL202A DEC DI202B DEC SI202C DEC SI202D LOOP 2009202F INT 3运行结果:5、思考题(1)(2)(3)6. 总结(二)MASM汇编程序和LINK连接程序的使用操作1、计算机钢琴程序1)实验内容源程序为:DATA SEGMENTMESS DB Push any key to stop

13、!,0dH,0aH,$TABLE DW 524,588,660,698,784,880,988,1048,1176,1320,0TABLEL DB 31H,31H,32H,31H,34H,33H,3BH DB 31H,31H,32H,31H,35H,34H,3BH DB 31H,31H,38H,36H,34H,33H,32H,3BH DB 36H,36H,36H,34H,35H,34H,3BH,0AAHDATA ENDSSTACK SEGMENT PARA STACK STACKSTA DB 256 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS: CODE, D

14、S: DATA, SS: STACK, ES: DATASTART PROC FAR DIV WORD PTR TABLE+BX PUSH DS MOV BX, AX XOR AX, AX MOV AL, 10110110B PUSH AX OUT 43H, AL MOV AX, DATA MOV AX, BX MOV DS, AX OUT 42H, AL MOV ES, AX MOV AL, AH MOV AH, 09H OUT 42H, AL LEA DX, MESS IN AL, 61H INT 21H OR AL, 03HKK: LEA SI, TABLEL OUT 61H, AL C

15、ALL DELAY IN AL, 61H AND AL, 0FCH OUT 61H, AL QQ: INC SISING: MOV AH, 06H JMP SING MOV DL, 0FFH FINISH: RET INT 21H START ENDP JNE FINISH MOV AL, SI DELAY PROC NEAR ; 延时子程序 CMP AL, 3BH PUSH CX JNE DDD PUSH AX CALL DELAY MOV AX, 500H ; 大循环次数 JMP QQ X1: MOV CX, 0FFFFH ; 小循环次数DDD: CMP AL, 0AAH X2: DEC

16、CX JE KK JNZ X2 SUB AL, 31H DEC AX SHL AL, 01H JNZ X1 MOV BL, AL POP AX MOV AX, 0000H POP CX MOV DX, 12H RET MOV BH, 00H DELAY ENDP CODE ENDS END START2、求数据块的最小值和最大值)实验内容 DATA SEGMENT BUFFER DB 10,22,33,-80,127,-76,0,90,-45,60,-1 MINVAL DB ? MAXVAL DB ? DATA ENDS STACK SEGMENT PARA STACK STACK STA D

17、B 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK START PROC FAR PUBH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX MOV ES, AX LEA BX, BUFFER MOV CH, 0 MOV CL, BX INC BX MOV AL, BX MOV MINVAL, AL MOV MAXVAL, AL INC BX DEC CX AGAIN: MOV AL, BX CMP AL, MINVAL JE NEXT JG A1

18、 MOV MINVAL, AL JMP NEXT A1: CMP AL, MAXVAL JL NEXT MOV MAXVAL, AL NEXT: INC BX DEC CX JNE AGAIN RETF START ENDP CODE ENDS END START)实验步骤3. 运行结果:反汇编生成的代码:结果:最小值在141C:B中,最大值在141:C中。3、从无序数列中删除一个元素1)实验内容2)实验步骤 代码:DATA SEGMENTSER DB 7,ABCDEFGKEY DB FFLAG DB 0DATA ENDSSTACK SEGMENT PARA STACK STACKSTAC D

19、B 100 DUP (?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX LEA BX,SER MOV CX,BX MOV AL,KEYAA: INC BX CMP AL,BYTE PTR BX JE KK LOOP AA MOV FLAG,0FFH JMP ENKK: DEC CXBB: MOV AL,BYTE PTR BX+1 MOV BYTE PTR BX,AL INC

20、BX LOOP BB EN: RETSTART ENDP CODE ENDS END START运行结果:4、思考题 5. 总结实验三 DOS系统功能调用及模块化程序设计一、 实验目的二、 实验设备三、 实验内容及步骤(一)DOS键盘、显示基本功能子程序调用1、 显示缓冲区的字符串 1)实验程序:DSEGSEGMENTSTRINGDBWelcome to DONG HUA University!,0dH,0aH,$DSEGENDSSTACK SEGMENTPARA STACK STACKDB256DUP (?)STACKENDSCSEGSEGMENTMAINPROCFARASSUME CS:

21、CSEG, DS: DSEG SS: STACKSTART:PUSHDSMOVAX,0PUSHAXMOVAH,9MOVDX,SEG STRINGMOVDS, DXMOVDX,OFFSET STRINGINT21HRETMAINENDPCSEGENDSENDSTART2) 实验步骤:运行结果:2、键盘输入小写字母,显示器显示大写字母 1)实验程序: CSEGSEGMENTMAIN PROCFAR ASSUMECS:CSEGSTART:PUSHDSMOV AX, 0PUSH AXBEGIN:MOVAH,1INT21HCMPAL,aJBSTOPCMPAL,zJASTOPSUBAL,20HMOVDL,

22、ALMOVAH,2INT21HJMP BEGINSTOP:RETMAINENDPCSEGENDSENDSTART 2) 实验步骤:运行结果:3、从键盘输入一个二位十进制的月份数(01-12),显示相应月份的英文缩写名1)程序及其结构程序如下:DATASGSEGMENTPARADATATHREEDB3MONINDB3,4 DUP(?)ALFMONDB ?,$MONTABDB JAN,FEB,MAR,APR,MAY,JUNDB JUL,AUG,SEP, OCT,NOV,DECDATASGENDSCODESGSEGMENTPARACODEASSUMECS:CODESG,DS:DATASGMAINPR

23、OCFARPUSHDSSUBAX,AXPUSHAXMOVAX,DATASGMOVDS,AXMOVES,AXCALLINPUTCALLLOCATECALLDISPLAYRETMAINENDPINPUTPROCNEAR; 键盘输入并将ASC码转换二进制数的子程序PUSHDXMOVAH,0AH; 键盘输入月份数LEADX, MONININT21HMOVAH,MONIN+2 ; 将月份数字的ASC码取入AH和ALMOVAL,MONIN+3XORAX,3030H; 将ASC码转换为BCD码CMPAH,00JZRETURNSUBAH,AHADDAL,10RETURN:POPDXRETINPUT:ENDPL

24、OCATEPROCNEAR;将月份数字转换为英文缩写字母的子程序PUSHSIPUSHDIPUSHCXLEASI,MONTABDECALMULTHREEADDSI,AXMOVCX,03CLDLEADI,ALFMONREPMOVSBPOPCXPOPDIPOPSIRETLOCATE:ENDPDISPLAYPROCNEAR;屏幕显示子程序PUSHDXLEADX,ALFMONMOVAH,09INT21HPOPDXRETDISPLAYENDPCODESGENDSENDMAIN运行结果:分别输入01,09,10得到(二)采用DOS功能调用设计源程序,并运行调试程序1、十进制加法和结果显示程序1)程序设计要求

25、2)实验步骤:3)代码DESG SEGMENTADDOP1 DD 9999SUM DD ?DESG ENDSESEG SEGMENTADDOP2 DD 9999ESEG ENDSSTACK SEGMENT PARA STACK STACKDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME DS:DESG,CS:CODE,ES:ESEGSTART:MOV AX,DESGMOV DS,AXMOV AX,ESEGMOV ES,AXMOV AX,WORD PTR ADDOP1ADD AX,WORD PTR ADDOP2MOV WORD PTR SUM,AXMOV AX,

26、WORD PTR ADDOP1+2ADC AX,WORD PTR ADDOP2+2MOV WORD PTR SUM+2,AXMOV BX,WORD PTR SUM+2CALL DISPLAYMOV BX,WORD PTR SUMCALL DISPLAYMOV AH,4CHINT 21HDISPLAY PROC NEARMOV CX,10000DCALL DEC_DIVMOV CX,1000DCALL DEC_DIVMOV CX,100DCALL DEC_DIVMOV CX,10DCALL DEC_DIVMOV CX,1DCALL DEC_DIVRETDEC_DIVPROC NEARMOV AX

27、,BXMOV DX,0DIV CXMOV BX,DXMOV DL,ALADD DL,30HMOV AH,2HINT 21HRETDEC_DIV ENDPDISPLAY ENDPCODE ENDSEND START4) 运行结果反汇编结果: (两个加数均为9999)2、十进制加法和算式显示程序1)程序设计要求2) 实验步骤: 3)代码DSEG SEGMENT ADDOP1 DD 1234JIAHAO DB +,$DENGHAO DB =,$TEN DW 10SUM DD ?DSEG ENDSESEG SEGMENTADDOP2 DD 6789ESEG ENDSSTACK SEGMENT PARA

28、 STACK STACKDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME DS:DSEG,CS:CODE,ES:ESEGSTART:MOV AX,DSEGMOV DS,AXMOV AX,ESEGMOV ES,AXMOV AX,WORD PTR ADDOP1ADD AX,WORD PTR ADDOP2MOV WORD PTR SUM,AXMOV AX,WORD PTR ADDOP1+2ADC AX,WORD PTR ADDOP2+2MOV WORD PTR SUM+2,AXMOV BX,WORD PTR ADDOP1+2CALL DISPLAYMOV BX,WORD PTR ADDOP1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号