收藏 分销(赏)

微机原理大作业.doc

上传人:天**** 文档编号:4334151 上传时间:2024-09-06 格式:DOC 页数:28 大小:924.39KB
下载 相关 举报
微机原理大作业.doc_第1页
第1页 / 共28页
微机原理大作业.doc_第2页
第2页 / 共28页
点击查看更多>>
资源描述
专业:信息对抗技术 班级:1302031 姓名:韩冰 学号:13020310042 指导教师:张娟 微机原理上机报告 目 录 一、第一次上机 2 1.实验目的 2 2.实验仪器 2 3.实验内容 2 4.实验结果 5 5.问题讨论 7 二、第二次上机 8 1.实验目的 8 2.实验仪器 8 3.实验内容 8 4.实验结果 10 5.问题讨论 11 三、第三、四次上机 11 1.实验目的 11 2.实验仪器 11 3.实验内容 11 4.实验结果 25 27 第一次上机 一、实验目的 1. 熟练掌握8086/8088的各种寻址方式及应用。 2.掌握DEBUG调试程序中的一些常用命令的使用方法,为以后的实验打下基础。 二、实验仪器 586微机 1台 三、实验内容 1.关于数据的寻址方式练习 8086/8088 提供多种方式实现操作数寻址,大体可分为7种: a. 立即寻址 b. 寄存器寻址 c. 直接寻址 d. 寄存器间接寻址 e. 寄存器相对寻址 f. 基址变址寻址 g. 基址变址且相对寻址 掌握8086/8088的这些寻址方式,是学习汇编语言编程的关键。 2.实验步骤 ①在全屏幕编辑软件下,建立以下汇编语言源程序。 源代码: STACK SEGMENT STACK DB 0B0H, 0B1H, 0B2H, 0B3H, 0B4H, 0B5H, 0B6H, 0B7H, DB 0B8H, 0B9H DB 0BAH, 0BBH, 0BCH, 0BDH, 0BEH,0BFH DB 10H DUP(00) STACK ENDS DATA1 SEGMENT DB 0A0H, 0A1H, 0A2H, 0A3H TABLE DW 0A5A4H DB 0A6H, 0A7H, 0A8H, 0A9H, 0AAH, 0ABH DB 0ACH, 0ADH, 0AEH, 0AFH DATA1 ENDS DATA2 SEGMENT DB 0C0H, 0C1H, 0C2H, 0C3H, 0C4H, 0C5H, 0C6H, 0C7H DB 0C8H ,0C9H, 0CAH, 0CBH, 0CCH, 0CDH, 0CEH, 0CFH DATA2 ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA1, ES:DATA2, SS:STACK START: MOV AX, DATA1 MOV DS, AX MOV AX, DATA2 MOV ES, AX MOV BX, 0004H MOV CX, 0005H MOV BP, 0003H MOV SI, 0002H MOV DI, 0001H MOV AX, CX MOV AX, 500H MOV AX, TABLE MOV AX, ES:[BX] MOV AX, [BX+05H] MOV AX, SS:[BX]+03H MOV AX, TABLE [BX] MOV AX, 07H [BX] MOV AX, [BP] MOV AX, TABLE [BP] MOV AX, 08H [BP] MOV AX, [BP+06H] MOV AX, DS:[BP+03H] MOV AX, [BP]+05H MOV AX, ES: [SI+03H] MOV AX, [DI+06H] MOV AX, [DI]+05H MOV AX, TABLE [SI] MOV AX, [SI] MOV AX, TABLE [DI] MOV AX, [SI]+05H MOV AX, [BX] [DI+01H] MOV AX, [BX] [SI]+03H MOV AX, TABLE [BX] [SI] MOV AX, ES:[BX] [DI] MOV AX, [BP] [DI+02H] MOV AX, TABLE [BP] [DI] MOV AX, ES:[BP] [SI] MOV AX, [BP] [SI+05H] MOV AX, 03H [BP] [DI] MOV AX, [BP] [SI] MOV AX, [BP+02H] [DI+03H] MOV AX, TABLE [BP+02H] [DI+03H] MOV AH, 4CH INT 21H CODE ENDS END START ②用MASM.EXE宏汇编程序对以上源程序进行汇编 ③用LINK.EXE连接程序对文件名.OBJ文件进行连接 ④对源程序中从MOV AX, CX开始以下所有指令按下表进行计算。 四、实验结果 指令 SRC寻址方式 SRC的地址 AX推算值 AX实际值 MOV AX, CX 寄存器寻址 0005H 0005H MOV AX, 500H 立即寻址 0500H 0500H MOV AX, TABLE 直接寻址 DS:0004H A5A4H A5A4H MOV AX, ES:[BX] 寄存器间接寻址 ES:0004H C5C4H C5C4H MOV AX, [BX+05H] 寄存器相对寻址 DS:0009H AAA9H AAA9H MOV AX, SS:[BX]+03H 寄存器相对寻址 SS:0007H B8B7H B8B7H MOV AX, TABLE [BX] 寄存器相对寻址 DS:0008H A9A8H A9A8H MOV AX, 07H [BX] 寄存器相对寻址 DS:000BH ACABH ACABH MOV AX, [BP] 寄存器间接寻址 SS:0003H B4B3H B4B3H MOV AX, TABLE [BP] 寄存器相对寻址 DS:0007H A8A7H A8A7H MOV AX, 08H [BP] 寄存器相对寻址 SS:000BH BCBBH BCBBH MOV AX, [BP+06H] 寄存器相对寻址 SS:0009H BAB9H BAB9H MOV AX, DS:[BP+03H] 寄存器相对寻址 DS:0006H A7A6H A7A6H MOV AX, [BP]+05H 寄存器相对寻址 ES:0008H B9B8H B9B8H MOV AX, ES: [SI+03H] 寄存器相对寻址 ES:0005H C6C5H C6C5H MOV AX, [DI+06H] 寄存器相对寻址 DS:0007H A8A7H A8A7H MOV AX, [DI]+05H 寄存器相对寻址 DS:0006H A7A6H A7A6H MOV AX, TABLE [SI] 寄存器相对寻址 DS:0006H A7A6H A7A6H MOV AX, [SI] 寄存器间接寻址 DS:0002H A3A2H A3A2H MOV AX, TABLE [DI] 寄存器相对寻址 DS:0005H A6A5H A6A5H MOV AX, [SI]+05H 寄存器相对寻址 DS:0007H A8A7H A8A7H MOV AX, [BX] [DI+01H] 基址变址且相对寻址 DS:0006H A7A6H A7A6H MOV AX, [BX] [SI]+03H 基址变址且相对寻址 DS:0009H AAA9H AAA9H MOV AX, TABLE [BX] [SI] 基址变址且相对寻址 DS:000AH ABAAH ABAAH MOV AX, ES:[BX] [DI] 基址变址寻址 DS:0005H C6C5H C6C5H MOV AX, [BP] [DI+02H] 基址变址且相对寻址 DS:0006H B7B6H B7B6H MOV AX, TABLE [BP] [DI] 基址变址且相对寻址 DS:0008H A9A8H A9A8H MOV AX, ES:[BP] [SI] 基址变址寻址 DS:0005H C6C5H C6C5H MOV AX, [BP] [SI+05H] 基址变址且相对寻址 DS:000AH BBBAH BBBAH MOV AX, 03H [BP] [DI] 基址变址且相对寻址 DS:0007H B8B7H B8B7H MOV AX, [BP] [SI] 基址变址寻址 DS:0005H B6B5H B6B5H MOV AX, [BP+02H] [DI+03H] 基址变址且相对寻址 DS:0009H BAB9H BAB9H MOV AX, TABLE [BP+02H] [DI+03H] 基址变址且相对寻址 DS:000DH AEADH AEADH 五、问题讨论 1.在上表中,分析AX推算值与实际值有何不同?找出错误原因,小结出各种寻址方式所用 的段寄存器的规律来。 答:推算值与实际值相同。 第二次上机 一、实验目的 1.熟练掌握汇编语言程序设计的方法及上机步骤。 2.掌握算术运算中,十进制数调整指令的应用。 3.掌握子程序的设计方法。 4.掌握DOS功能的调用方法。 二、实验仪器 586微机 1台 三、实验内容 1.编程要求与提示: 编写求十进制数02121424与21736543之和的程序,并将和以十进制数的形式送屏幕显示。 ①两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。 ②和以压缩十进制数的形式存入SUM以下单元。 ③将和送到屏幕显示部分功能的实现采用子程序的形式。 2.实验步骤 ①用全屏幕编辑软件建立源程序。 ②用masm.exe汇编程序对源程序进行汇编,形成目标程序。 ③用link.exe连接程序对目标程序进行连接形成可执行文件。 ④用DEBUG对连接通过的可执行程序进行调试 3.源代码 STACK SEGMENT STACK DB 10H DUP(00) STACK ENDS DATA SEGMENT ADD1 DB 12H,67H,85H,32H ADD2 DB 21H,73H,65H,43H SUM DB 4H DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,DATA MOV ES,AX MOV AX,STACK MOV SS,AX LEA SI,ADD1[3] LEA BX,ADD2[3] LEA DI,SUM[3] MOV CX,4 CLC L1: MOV AL,[SI] ADC AL,[BX] DAA MOV [DI],AL DEC SI DEC BX DEC DI LOOP L1 CALL DISPAL EXITPROC: MOV AH,4CH MOV AH,1 INT 21H DISPAL PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI LEA DI,SUM MOV CX,4 DISPAL2: MOV AL,[DI] SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 MOV AH,2 MOV DL,AL ADD DL,30H INT 21H MOV AL,[DI] AND AL,0FH MOV AH,2 MOV DL,AL ADD DL,30H INT 21H INC DI LOOP DISPAL2 POP DI POP DX POP CX POP BX POP AX RET DISPAL ENDP CODE ENDS END START 四、实验结果 五、问题讨论 1.在以十进制数形式参加运算的程序设计中,应注意那些问题。 答:应注意进位和溢出。 2.总结循环程序设计的步骤及方法。 答:分析题目,画流程图,标出循环条件,写程序,检测循环能否进行。 第三、四次上机 一、实验目的 1.增强和提高汇编语言程序设计的能力,掌握模块化程序设计的方法。 2.熟练掌握DOS常用功能的调用方法。 二、实验仪器 586微机 一台 三、实验内容 1.编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为: ①按下“1”键,完成字符串小写字母变成大写字母; 用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。 ②按下“2”键,完成找最大值(选择a); a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来。 ③按下“3”键,完成排序(选择a); a.接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示。 ④按下“4”键,显示时间; 首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束),然后,在屏幕上不断显示时间,格式为: XX(时): XX(分): XX(秒) 最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。 ⑤按下“5”键,结束程序运行,返回系统提示符。 2.源代码 STACK SEGMENT STACK 'STACK' DB 256 DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT TABLE DW G1, G2, G3, G4, G5 STRING0 DB ' My school ID is 13020310042.My name is Li HanBing.',0DH,0AH,'$' STRING1 DB '1. Change small letters into capital letters of string;', 0DH, 0AH, '$' STRING2 DB '2. Find the maximum of string;', 0DH, 0AH, '$' STRING3 DB '3. Sort for datas;', 0DH, 0AH, '$' STRING4 DB '4. Show Time;', 0DH, 0AH, '$' STRING5 DB '5. Exit.', 0DH, 0AH, '$' STRINGN DB 'Input the number you select (1-5) : $' IN_STR DB 'Input the string (including letters & numbers, less than 60 letters) :', 0DH, 0AH, '$' PRESTR DB 'Original string : $' NEWSTR DB 'New string : $' OUT_STR DB 'The string is $' MAXCHR DB 'The maximum is $' IN_NUM DB 'Input the numbers (0 - 255, no more than 20 numbers) : ', 0DH, 0AH, '$' OUT_NUM DB 'Sorted numbers : ', 0DH, 0AH, '$' IN_TIM DB 'Correct the time (HH:MM:SS) : $' HINTSTR DB 'Press ESC, go back to the menu; or press any key to play again!$' KEYBUF DB 61 DB ? DB 61 DUP (?) NUMBUF DB ? DB 20 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV SP, OFFSET TOP MAIN: CALL FAR PTR MENU AGAIN: MOV AH, 2 MOV BH, 0 MOV DL, 41 MOV DH, 10 INT 10H MOV AH, 1 INT 21H CMP AL, '1' JB AGAIN CMP AL, '5' JA AGAIN SUB AL, '1' SHL AL, 1 CBW LEA BX, TABLE ADD BX, AX JMP WORD PTR [BX] G1: CALL FAR PTR CHGLTR MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G1 G2: CALL FAR PTR MAXLTR MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G2 G3: CALL FAR PTR SORTNUM MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G3 G4: CALL FAR PTR TIMCHK MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G4 G5: MOV AH, 4CH INT 21H MENU PROC FAR MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 5 INT 10H MOV AH, 9 LEA DX, STRING0 INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 6 INT 10H MOV AH, 9 LEA DX, STRING1 INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 7 INT 10H MOV AH, 9 LEA DX, STRING2 INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 8 INT 10H MOV AH, 9 LEA DX, STRING3 INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 9 INT 10H MOV AH, 9 LEA DX, STRING4 INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 10 INT 10H MOV AH, 9 LEA DX, STRING5 INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 11 INT 10H MOV AH, 9 LEA DX, STRINGN INT 21H RET MENU ENDP CHGLTR PROC FAR RECHG: MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 5 INT 10H MOV AH, 9 LEA DX, IN_STR INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 6 INT 10H MOV AH, 0AH LEA DX, KEYBUF INT 21H CMP KEYBUF + 1, 0 JZ RECHG LEA BX, KEYBUF + 2 MOV AL, KEYBUF + 1 CBW MOV CX, AX ADD BX, AX MOV BYTE PTR [BX], '$' MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 7 INT 10H MOV AH, 9 LEA DX, PRESTR INT 21H MOV AH, 9 LEA DX, KEYBUF + 2 INT 21H LEA BX, KEYBUF + 2 LCHG: CMP BYTE PTR [BX], 61H JB NOCHG AND BYTE PTR [BX], 0DFH NOCHG: INC BX LOOP LCHG MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 8 INT 10H MOV AH, 9 LEA DX, NEWSTR INT 21H MOV AH, 9 LEA DX, KEYBUF + 2 INT 21H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 9 INT 10H MOV AH, 9 LEA DX, HINTSTR INT 21H RET CHGLTR ENDP MAXLTR PROC FAR REMAX: MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 5 INT 10H MOV AH, 9 LEA DX, IN_STR INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 6 INT 10H MOV AH, 0AH LEA DX, KEYBUF INT 21H CMP KEYBUF+1, 0 JZ REMAX LEA BX, KEYBUF+2 MOV AL, KEYBUF+1 CBW MOV CX, AX ADD BX, AX MOV BYTE PTR [BX], '$' MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 7 INT 10H MOV AH, 9 LEA DX, OUT_STR INT 21H MOV AH, 9 LEA DX, KEYBUF+2 INT 21H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 8 INT 10H MOV AH, 9 LEA DX, MAXCHR INT 21H MOV DL, 0 LEA BX, KEYBUF+2 LCMP: CMP [BX], DL JB NOLCHG MOV DL, [BX] NOLCHG: INC BX LOOP LCMP MOV AH, 2 INT 21H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 9 INT 10H MOV AH, 9 LEA DX, HINTSTR INT 21H RET MAXLTR ENDP SORTNUM PROC FAR RESORT: MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 5 INT 10H MOV AH, 9 LEA DX, IN_NUM INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 6 INT 10H MOV AH, 0AH LEA DX, KEYBUF INT 21H CALL CIN_INT CMP AL, 0 JZ RESORT CMP NUMBUF, 0 JZ RESORT MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 7 INT 10H MOV AH, 9 LEA DX, OUT_NUM INT 21H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 8 INT 10H CALL FAR PTR MPSORT CALL FAR PTR INT_OUT MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 9 INT 10H MOV AH, 9 LEA DX, HINTSTR INT 21H RET SORTNUM ENDP CIN_INT PROC NEAR MOV CL, KEYBUF + 1 LEA SI, KEYBUF + 2 MOV CH, 0 MOV DH, 10 MOV AL, 0 MOV DL, 0 FNDNUM: CMP BYTE PTR [SI], ' ' JZ ADDNUM MOV DL, 1 MUL DH XOR BH, BH MOV BL, [SI] ADD AX, BX SUB AX, '0' CMP AH, 0 JA ERRNUM JMP NEXT ADDNUM: CMP DL, 1 JNZ NEXT INC CH CALL ADDNEW MOV DL, 0 MOV AL, 0 NEXT: INC SI DEC CL CMP CL, 0 JNZ FNDNUM CMP DL, 1 JNZ
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服