微机实验报告_第1页
微机实验报告_第2页
微机实验报告_第3页
微机实验报告_第4页
微机实验报告_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 微机实验报告学 生 姓 名 专 业 班 学 号 指 导 老 师 年 月 日注:红色为程序修改部分实验一 1、用命令 A 汇编下列指令,判断指令正误并说明原因。 (1) ROR AX,8 (2) LEA DI,AX (3) MOV DS,2010 (4) PUSH AL (5) OUT 900,AL (6) MOV BX,0答:(1)ROR 为右移指令,每次移位只能移一个位。(2)不能对累加器去偏移地址。(3)立即数不能直接发送给段寄存器。此程序正确应该改为: MOV AX,2010 MOV DS,AX(4)字压入堆栈指令,它允许将 16 位的源操作数压入堆栈。(5)OUT 指令是把累加 AL

2、/AX 中的内容输出到指定的端口。(6)错在不知道 0 是以字节型数据存储到BX还是以字型数据存储到BX。2、说明可读写内存 RAM 和只读内存 ROM 的区别。答: ROM 和 RAM 是计算机内存储器的两种型号,ROM 表示的是只读存储器,即:它只能读出信息,不能写入信息,计算机关闭电源后其内的信息仍旧保存,一般用它存储固定的系统软件和字库等。RAM 表示的是读写存储器,可其中的任一存储单元进行读或写操作,计算机关闭电源后其内的信息将不在保存,再次开机需要重新装入,通常用来存放操作系统,各种正在运行的软件、输入和输出数据、中间结果及与外存交换信息等,我们常说的内存主要是指 RAM。3、说明

3、命令 T 和 P 的差别。答:两个都是单步执行指令。区别在于遇到调转程序 call 指令时,T 指令会跳到 call 指令中去一步一步的执行;而 p 指令遇到 call 指令时,它一下子全部执行后就跳出来,而不会一步一步的去执行。指出任务 6 中程序段的出错原因,给出修改后的程序段。4、利用 T,P,G 命令,执行下列指令段,注意它们的不同之处。 (1) MOV DI,300 MOV SI,400 MOV CX,3 CLD REP MOVSB INT 3-T 指令-G 指令-P 指令(2) MOV AH,2 MOV DL,41 INT 21 INT 3-P 指令-G 指令实验总结:指令异同T一

4、步一步执行G执行一段代码执行指令操作P在执行的过程中跳过循环(7) 先在 CS:200 处汇编一条 RET 指令,再在 CS:100 处汇编。 MOV BX,200 CALL BX INT 3然后从 MOV BX,200 处开始执行。7、给出任务 7 中调试好的程序。用命令 A 汇编下列程序段,并将程序写到硬盘上,然后调试程序段,观察程序段能否完成指定功能,若不能,说明原因,并修改程序。(8) 完成将 DS:2000 开始的 5 个字节内存内容相加,并把相加的结果存放在 DS2005 内存单元中。 MOV CX,5 MOV AL,0 MOV BX,2000 nest: ADD AL,BX IN

5、C BX DEC CX LOOP nest MOV BX,AL INT 3(9) 以双重循环来实现延时,然后再给 AX 赋值。 MOV AX,0 again1:MOV SI,3 again2:MOV DI,3 DEC DI JNZ again2 DEC SI JNZ again1MOV AX,100INT 3SI 减为零8、回答问题思考。a)、假设某内存单元的内容为 CCH,试问该内容如看作一条指令、看作无符号数、看作带符号数,那将分别表示什么?不查看教材中的指令系统代码,如何在DEBUG 下知道 CCH 表示一条什么指令?答:CC 指令: INT3 调试断点; 无符号数:204 带符号数:-

6、52b)、在指令 MOVBX,AX 中,操作数BX的寻址方式是什么?在 DEBUG 下执行完该指令后,如何查看执行结果?答:指令 MOVBX,AX 中,操作数BX的寻址方式是:寄存器间接寻址方式。在DEBUG 下执行完该指令后,输入 R 即可。c)、可否随意在 DEBUG 提示符“”后不带参数发出命令 G?什么情况下使用命令 G 时,可不用“=”给出执行的首地址?答:不带参数的 G 命令是指从当前 CS:IP 处开始运行,直到遇到返回指令、结束指令等才停止。因此,除非你已知当前 CS:IP 就是你想开始的位置,同时在你所运行的程序中,有结束或返回指令,否则可能会转到不可预知的地方。 “”而号可

7、以在不管当前 IP 为什么的情况下指定起始地址,这大减少了出错的机率。d)、分析出现死机的几种情况。如何理解死机现象?试从计算机的工作原理进行解释。答: 情况有:1、散热不良 2、移动不当 3、设备不匹配 4、内存条故障 5、硬盘故障 6、硬件资源冲突 7 内存容量不够 8、病毒感染 9、初始化文件遭破坏 10、启动的程序太多 11、内存中冲突理解: 死机就是 cpu 进入了死循环,不能中断退出到原来的管理进程。通常一个进程去调用一个进程,就会把原来进程的内存地址放入堆栈,去执行新进程,执行完,就从堆栈找到原进程的地址,回到原进程继续执行。死机的情况很多,多半是内核和驱动的问题造成的,通常应用

8、程序不会让它做底层的事情,你总是可以在任务管理器里把它给中断的。实验二 汇编语言程序结构1 伪操作学习编辑下列源文件:datavar0var1var2var3var4datacodestart: SEGMENT DB10101010B,TsingHua DW efgh DB374,1 DW1,9080H DDffeeddccH ENDS SEGMENTASSUME CS:code,DS:data MOVAX,data MOVDS,AX MOVCX,var0 LEAAX,var1 ENDSENDstartcode三、实验内容有如下程序段,程序源文件名设为 EA1.asm:dataSEGMENTs

9、tringDBhow are you doing?,D_wordDW1234h,5678hDataENDSCodeSEGMENT ASSUMECS:code,DS:datamainPROCFARBegin:PUSH DS MOVAX,0 PUSH AX MOVAX,data MOVDS,AX MOVSI,OFFSET string MOVBL,string RETmainENDPcodeENDS END begin经汇编、连接后,形成 EA1.exe,在 DEBUG 下装入此文件,用 t 查看程序。8结束实验前,演示编程任务(1)(2)(3)(4)的运行结果,请指导,教师检查。四、问题思考1汇

10、编语言程序中语句 END 后的标号作用是什么? 答:END START 表示程序结束。end 叫做结束语句, 2采用附录 2 介绍返回 DOS 的方法二中,可否将语句 main proc far 中的 far 属性去掉,为什么? 答:不能; 3一个段的大小为多少?一定是 64KB 吗?如何在 DEBUG 下查看程序在内存 的存放情况?画出编程任务 4 各段在内存的存放情况。 答:最大为 64k,在 dubug 中输入 d 就是看内存存放情况的 实验三1)显示 AL 中两位十六进制数程序B、程序清单CODE SEGMENTASSUME CS:CODE START: MOV AL,3EH MOV

11、BL,AL MOV DL,AL MOV CL,4 SHR DL,CL CMP DL,9JBE NEXT1 ADD DL,7 NEXT1: ADD DL,30H MOV AH,2 INT 21H ;显示高位 ASCII 码 MOV DL,BL AND DL,0FH CMP DL,9 JBE NEXT2 ADD DL,7 NEXT2: ADD DL,30H MOV AH,2 INT 21H ;显示低位 ASCII 码 MOV AH,4CH INT 21H CODE ENDS ;返回 DOS END START2) 显示键入字符程序 CMP AL,0DH JZ DONE CMP AL,0 JB NE

12、XT CMP AL,9 JA NUMB MOV DL,AL MOV AH,2 INT 21H JMP STARTNUMB:CMP AL,41H JB NEXT CMP AL,5AH JA CHARDISP:MOV DL,C MOV AH,2 INT 21HNEXT: JMP STARTCHAR:CMP AL,61H JB NEXT CMP AL,7AH JA NEXT JMP DISPDONE: MOV AH,4CH INT 21HCODE ENDSEND START 实验四1)偶校验程序清单:a、程序流程图开始将 DS;SI 指向数据内存单元AL=(DS;SI)的偏移地址YAL=?$N是否为

13、偶YINC SIN偶数存储中(DS;SI)=ALINC DL结束b、程序:DSEG SEGMENTSTRN DB ASCDEfghijkLMNOPQuvw,$N DB 00hDSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXLEA SI, STRNMOV DL, 0AGAIN: MOV AL, SICMP AL, $JE DONETEST AL, 0FFHJPE NEXTOR AL, 80HMOV SI, ALINC DLNEXT: INC SIJMP AGAINDONE: MOV N, DLM

14、OV AH, 4CHINT 21HCSEG ENDSEND START实验结果:2)加法程序a、程序流程图:开始显示被加数和加数将加数和被加数由 ASCII 码转化为十六进制b、程序清单:DATA SEGMENTDAT1 DB 70H, 80H, 90H, 0A0H, 0A1H,0A2H, 0A3HDB 74H, 65H, 56HDAT2 DB 45H, 67H, 89H, 01AH, 02BH,03CHDB 4DH, 05EH, 06FH, 04HDAT3 DB 10 DUP(?)DATA ENDSCSDE SEGMENT ASSUME CS:CSDE,DS:DATASTART:MOV AX

15、,DATA MOV DS,AX LEA SI,DAT1 LEA DI,DAT2 LEA BX,DAT3 MOV CX,10 XOR AL,ALAGAIN:MOV AL, SI ADC AL, DI MOV BX, AL INC SI INC DI INC BXLOOP AGAIN MOV AH, 4CH INT 21H CSDE ENDS END START计数值 5CX清除最低位进位执行 ADC 带进位加法指令AAA 调整结果送被加数存储区调整偏移量NCX-1=0?Y将十六进制结果转化为 ASCII 码表示的字符串显示结果的和结束实验结果:实验 五1)码型转换程序清单:a、程序流程图:开始M

16、OV AX,DATAMOV DS,AXMOV CX,10LEA BX,BUFYNMOV AL,BX结束CX=?0MOV DL,AL PUSH CXMOV CL,4SHR DL,CL POP CXYNCX-1=9ADD DL,30HMOV AH,2INT 21HMOV DL,ALAND DL,OFHY=9?ADD DL,30HMOV AH,2INT 21HADD DL,7ADD DL,30HMOV AH,2INT 21HNADD DL,7ADD DL,30HMOV AH,2INT 21HINC BXb、实验清单:DATA SEGMENTBUF DB 0ABH,0CDH,0DEH,01H,02H,

17、03HDB 3AH,4BH,5CH,6FHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,10LEA BX,BUFAGAIN: MOV AL, BXCALL HEXASCINC BXLOOP AGAINMOV AH,4CHINT 21HHEXASC PROC NEARMOV DL,ALPUSH CXMOV CL,4SHR DL,CLPOP CXCALL DISPMOV DL,ALAND DL,0FHCALL DISPRETHEXASC ENDPDISP PROCCMP DL,9JBE NE

18、XTADD DL,7NEXT: ADD DL,30HMOV AH,2INT 21HRETDISP ENDPCODE ENDSEND START程序运行结果为:开始MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,9INT 21HLEA SI,BUFMOV CL,SI+2MOV CH,0INC SIPOP AXMOV DL,CHARMOV AH,2INT 21HMOV DL,ALAND DL,OFHY=9?NMOV AL,CHARMOV AH,0PUSH SIPUSH CXPUSH AXADD DL,30HMOV AH,2INT 21ADD DL,7ADD DL,30HM

19、OV AH,2INT 21PUSH BPMOV BP,SPMOV SI,BP+10MOV CX,BP+6XOR AH,AH结束YCX=?0CX-1NYAL=?SIINC AHINC SIINC SINMOV AL,AHMOVBP+10,AXPOP BPB、程序清单:DATA SEGMENTCHAR DB bBUF DB Qbbbbbbbaaaaaaa$N EQU $-BUFDATA ENDSscode segment assume cs: scodeCHECK PROC FARPUSH BPMOV BP,SPMOV SI,BP+10MOV CX,BP+8MOV AX,BP+6XOR AH,AH

20、AGAIN: CMP AL,SIJNE NEXT1INC AHNEXT1: INC SILOOP AGAINMOV AL,AHMOV BP+10,AXPOP BPRET 4CHECK ENDPscode endsMCODE SEGMENTASSUME CS: MCODE, DS: DATASTART: MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,9INT 21HLEA SI, BUFMOV CL, SI+1MOV CH, 0INC SIINC SIMOV AL,CHARMOV AH,0PUSH SIPUSH CXPUSH AXCALL CHECKMOV DL,CH

21、ARMOV AH,2INT 21HPOP AXMOV DL,ALAND DL, 0FHCMP DL,9JBE NEXTADD DL,7NEXT: ADD DL,30HMOV AH,2INT 21HMOV AH,4CHINT 21HMCODE ENDSEND START程序运行如下: 实验 六1)转换字符串小写字母为大写字母:A、程序清单:EXTRN DNTOUP: FARPUBLICSTRING1, STRING2DATASEGMENTSTRING1DB This is a Book,$STRING2DB 80 DUP (0)DATAENDSCODESEGMENTASSUME CS: CODE

22、, DS: DATASTART:MOV AX, DATAMOVDS, AXCALL DNTOUPMOV AH, 4CHINT 21HCODEENDSENDSTARTPUBLICDNTOUPEXTRNSTRING1: BYTE, STRING2: BYTECODESEGMENTASSUMECS: CODEDNTOUPPROC FARMOVBX,0CYCLE:MOVAL, STRING1 BXCMPAL,24HJZ DONECMPAL,61HJB NEXT debugCMPAL, 7AHJA NEXTSUB AL,20HNEXT:MOVSTRING2 BX,ALNC BXJMP CYCLEDONE

23、:MOVAL,$MOVSTRING2BX,ALMOVDL, 0DHMOVAH, 2INT 21HMOVDL, 0AHMOVAH, 2INT 21HLEA DX, STRING1MOVAH, 9INT 21HMOVDL, 0DHMOVAH, 2INT 21HMOVDL, 0AHMOVAH, 2INT 21HMOVDX, OFFSET STRING2MOVAH,9RETDNTOUPCODEENDENDP ENDS程序运行如下:2)查找指定字符,并返回地址值A、程序清单:EXTRN FINDC:FARPUBLIC STRINDATA SEGMENTSTRIN DB LINK DISPLAY SUBR

24、 OUNTINE $ADDR DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AH,1 INT 21H CALL FINDC MOV ADDR,DI MOV DL,AL PUSH AX MOV CL,4 SHR DL,CL CMP DL,9 JBE JUMP ADD DL,7JUMP:ADD DL,30H MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START;FINDC.ASM 为子模块程序名PUBLIC FINDCEXTRN

25、 STRN:BYTECODE SEGMENT ASSUME CS:CODEFINDC PROC FAR LEA DI,TRINAGAIN:CMP BYTE PRTDI,$ JZ DONE CMP AL,DI JNZ NEXTDONE1:RETNEXT:INCDI JMP AGAINDONE:MOV DI,0FFFFH JMP DONE1FINDC ENDPCODE ENDS END实验七1、统计小写字母个数A、流程图:开始提示输入字符串回显示输入的字符串取字符串进行判断所取字符的 ASCII 码是否大于 97 小于 122?YN压栈并 DX+1存入该字符并 BX+1字符个数减 1N字符个数是否为0?Y存入字符个数显示所有字符的个数、小写字母及小写字母的个数。结束DATA SEGMENTSTRN DB 80 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS, AXLEA DI, STRNMOV CL, 0AGAIN: MOV AH,1INT 21HCMP AL,0DHJZ DONEMOV DI,ALINC DIINC CLJMP AGAINDONE: LEA SI,STRNMOV CH,0MOV BL,0CLDCYCLE: LODSBCMP AL,61HJB NE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论