当前位置:文档之家› 微机原理实验实验指导书2013

微机原理实验实验指导书2013

微型计算机原理与应用实验指导书上海大学通信学院2013 年 4 月微机原理实验一一、实验目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的功能。

二、实验要求:在PC机上完成下列程序的调试运行,并写出运行结果。

三、实验内容1.DEBUG的基本操作:(1)从WINDOWS进入DOS之后,输入命令启动DEBUG:C:>DEBUG 回车(2)输入R命令,查看和记录CPU各个寄存器的内容:-R回车看到什么?(3)输入A命令,汇编下面的字符“WINDOWS”显示程序(DEBUG调试环境中,默认为十六进制,因此源程序中十六进制数后面不写H):-A100 ;从偏移地址是0100H处开始写指令MOV AH,2MOV DL, 57 ;57H 是“W”的ASCII码INT 21 ;INT 21是DOS 功能调用,AH=2代表2号功;能。

这3句合起来的功能是:显示DL中的字符MOV DL, 49INT 21MOV DL, 4EINT 21MOV DL, 44INT 21MOV DL, 4FINT 21MOV DL, 57INT 21MOV DL, 53INT 21INT 3 ;功能是产生一个断点,不要省略(4)输入U命令反汇编上面的程序:-U 100问:这里100代表什么?(5)输入G命令连续运行上面的程序,记录运行结果:-G=100(6)输入E命令把上面程序中的数据57,49,4E,44,4F,57,53依次分别改为57,45,4C,43,4F,4D,45:-E 103 回车(以下同)-E 107-E 10B-E 10F-E 113-E 117-E 11B(7)输入D命令查看程序机器码的存放情况:-D 100 11E ;看从100开始到11E的机器码(8)输入G命令再连续运行程序,并记录运行结果:-G=100(9)依次输入下面的T命令(单步执行)和G命令(设置断点并启动运行),记录各命令的运行结果:-T=100 回车-G=100 106 回车-G=100 10A 回车-G=100 10E 回车-G=100 11E 回车注意:若不小心打错指令,可以这样修改:例如:CS:0100 B300 MOV BL,00102 53 PUSH BX0103 B220 LP1: MOV DL,20要修改“PUSH BX”,因为这条指令的偏移地址是0102H,所以按以下操作:-A 0102 回车,然后把正确的指令打入,“-A ”是汇编指令。

如果要查看0100H以后的指令及相应的机器代码,可以-U 0100 回车,能够看到CS:0100开始的指令及相应的机器代码。

“-U ”是反汇编若发现有误用,用“-A XXXX 回车”,重打这条指令即可2.一字节十六进制数转换为ASCII码(只考虑大写字母)用E命令在DS:1000单元中存放十六进制数5A,用A命令从CS:0100单元开始存放下面程序的机器码,并调试运行(DEBUG调试环境中,源程序中十六进制数后面不写H):CS:0100 8D360010 LEA SI,[1000]0104 8D3E2010 LEA DI,[1020]0108 8A04 MOV AL,[SI]010A 240F MOV BL,AL010C 240F AND AL,0F010E E80E00 CALL 011F0111 80E30 AND BL,F00114 B90400 MOV CX,40117 D2EB SHR BL,CL0119 88D8 MOV AL,BL011B E80100 CALL 011F011E F4 RET011F 3C09 CMP AL,090121 7602 JBE 01250123 0407 ADD AL,070125 0430 ADD AL,300127 8805 MOV [DI],AL0129 47 INC DI012A C3 RET运行结果:1)写出执行上述程序的命令行________________________2)程序执行后,[1020]=__________,[1021]=__________。

3)思考:NOP 是空操作指令,若在ADD AL,07后面,加一条NOP,结果会如何?3、搜索字符串结束标志,统计搜索的字符个数用E命令在DS:1000开始的单元中存放若干个ASCII字符,例如:30,31,32……39,0D。

(0D作为字符串结束标志,实验中请输入与示例不同的字符组合)。

用A命令从CS:0200单元开始存放程序的机器码,并调试运行。

参考程序如下:LEA DI, [1000]MOV DL, 0MOV AL, 0DAGAIN: CMP AL, [DI]JE DONE (debug环境下,写标号DONE语句的偏移地址)INC DLINC DIJMP AGAIN (AGAIN语句的偏移地址)DONE: LEA BX, [1020]MOV [BX],DLRET运行结果:1)在DS:1000开始的单元中存放的字符串是______________________2)程序执行后,搜索的字符个数存放在___________单元,该单元的值是___________。

3)程序执行后,(AL)=__________ ,(BX)=__________,(DL)=__________。

4.编制一个能在CRT上连续显示A,B,C,D······Z大写英文字符的源程序,并在源程序下汇编调试运行。

用A命令从CS:0300单元开始存放程序的机器码,并调试运行:参考源程序:CS:0300 B300 MOV BL,00302 53 PUSH BX0303 B220 MOV DL,200305 B402 MOV AH,020307 CD21 INT 210309 5B POP BX030A 88D8 MOV AL,BL030C FEC0 INC AL030E 3C1B CMP AL,1B0310 7502 JNZ 01140312 B001 MOV AL,010314 88C3 MOV BL,AL0316 53 PUSH BX ;0317 0440 ADD AL,400319 88C2 MOV DL,AL031B B402 MOV AH,02031D CD21 INT 21031F B9FFFF MOV CX,FFFF0322 49 DEC CX0323 75FD JNZ 03220325 EBDC JMP 0303按CTRL+C,可中止程序运行。

1)请画出程序的流程框图。

2)运行正确后,改写程序为0,1,2,3,4,5,7,8,9的循环显示。

3)思考:如果希望程序能够自动退出,应该如何实现?微机原理实验二汇编程序的基本语法及程序编制一、实验目的:1.熟悉各条伪指令的作用,了解完整源程序的结构2.掌握运算类程序设计的基本方法,编制简单汇编程序。

3.掌握masm、link的用法,熟悉汇编语言上机过程。

完整源程序结构STACK SEGMENT STACKDB 100 DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENT;定义程序运行所需的数据DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX, DATAMOV DS, AX ; 取数据段段地址MOV AX, STACKMOV SS, AX ; 取堆栈段段地址MOV SP, OFFSET TOP ;;输入实现特定功能的程序段MOV AH, 4CHINT 21HCODE ENDSEND START二、实验步骤1.使用EDIT或WINDOWS下的记事本或写字板输入你的程序并保存到D:\masm目录下,并命名(假设为Test1.asm. 后缀必须是asm).2.汇编过程:D:\masm>masm Test1.asm(如果没有错误,将生成Test1.obj文件)3.连接过程:D:\masm>link Test1(如果没有连接错误,将生成Test1.exe文件)4.调试程序:D:\masm>debug Test1.exe,将该程序装入debug进行调试。

三、实验内容1. 建立下列程序的可执行文件,并回答问题。

DATAS SEGMENTSTRING DB 'Hello World!',13,10,'$'DATAS ENDSCODES SEGMENTASSUME CS:CODES, DS:DATASSTART:MOV AX, DATASMOV DS, AXLEA DX, S TRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START1)在DEBUG中,如何观察数据段中的数据存储情况?数据存储的段地址和偏移地址如何察看?2)在DEBUG中,如何查看机器码所对应的源程序?代码的段地址和偏移地址如何确定?3)运行上述程序的命令行是:____________________,程序的运行结果是________________________________________。

4)代码段中的LEA DX, S TRING语句,翻译成机器指令后再反汇编,得到什么语句?为什么?5)如果代码段中有一条MOV BL, STRING语句,翻译成机器指令后再反汇编,得到什么语句?2. 从实验1的2-4三个参考程序中,任选一个改编成完整源程序,建立其可执行文件并运行。

(注意:需要定义标号,作为控制转移类指令中的操作数;直接寻址的存储器操作数,应通过变量表示)微机原理实验三一、实验目的1.进一步掌握8086汇编语言程序的编辑、宏汇编、连接及运行的操作步骤,进一步掌握编制源程序的格式,了解编辑程序EDIT、宏汇编MASM、联机程序LINK的功能,熟悉具有扩展名.ASM、.OBJ、.LST、.EXE等文件查询。

2.掌握分支、循环程序及子程序设计方法二、实验要求在DOS环境下,用EDIT文件编辑***.ASM源程序并存盘,用MASM文件汇编无误,用LINK文件连接无误,然后在DOS下运行***.EXE文件,用DEBUG 文件检查运行结果。

最后写出程序运行结果。

三、实验内容1、编制一个将10个带符号的正、负数分开的源程序,生成可执行文件后在debug 下调试运行。

1)设10个数为01H,02H,03H,04H,06H,0FFH,80H,81H,06H,07H。

2)将这些数据中的正、负数分开,正数放在变量V AR2对应的数据区中,负数放V AR3对应的数据区中。

2、编制源程序,并生成EXE可执行文件,然后调试运行(1)功能要求:找出无序的有符号数中的最小值和最大值(最少10个数,数据内容随意设定,数据类型:字节)。

相关主题