实验一DEBUG调试程序的应用
一、实验目的
1、了解DEBUG调试程序常用命令的基本格式、主要功能和使用方法。
2、熟悉进入或退出DEBUG调试程序运行界面的步骤。
3、掌握用DEBUG调试程序进行程序编辑、调试、运行、结果检查的基本方法。
4、进一步汇编语言上机环境及基本操作
二、实验预习要求
1、阅读本实验讲义和附录1,了解DEBUG调试程序常用命令的基本格式、主要功能和使用方法。
2、明确本实验的内容、步骤和方法,写出预习报告。
三、实验内容及步骤:
1、启动DEBUG程序
(1). 直接启动
如https://www.doczj.com/doc/5110020656.html,在C盘的根目录下,启动的方法是:
C:\>DEBUG
_
这时屏幕上会出现“_”提示符,等待键入DEBUG命令。
(2). 启动DEBUG程序的同时装入被调试文件
命令格式如下:
C:\>DEBUG [d:][PA TH]filename[.EXT]
[d:][PATH]是被调试文件所在盘及其路径,filename是被调试文件的文件名,[.EXT]是被调试文件的扩展名。
例如:BCDSUM.EXE可执行文件在A盘,用DEBUG对其进行调试的操作命令如下:C:\>DEBUG A:\BCDSUN.EXE↙
DOS在调用DEBUG程序后,再由DEBUG把被调试文件装入内存,当被调试文件的扩展名为COM时,装入偏移量为100H的位置,当扩展名为EXE时,装入偏移量为0的位置,并建立程序段前缀PSP,为CPU寄存器设置初始值。
2、在DEBUG环境下建立和汇编程序
在DEBUG环境下用户可以直接建立汇编语言源程序,并可以进行编辑修改,还可以进行汇编。
(1)。在在显示器上输出一个单字符
比如,在DEBUG下运行如下程序:
MOV DL,33H ;字符3的ASCII码送DL
MOV AH,2 ;使用DOS的2号功能调用
INT 21H ;进入功能调用,输出‘3’
INT 20H ;BIOS中断服务,程序正常结束。
该程序运行结果是在显示器上输出一个字符‘3’。其中涉及DOS和BIOS功能调用。因为我们是在DOS的支持下运行汇编语言程序,所以一般情况下,不能轻易使用输入/输出指令直接通过端口输入/输出,而必须使用DOS内部提供的子程序完成输入/输出。
DOS功能调用就是为诸如此类的目的设置的。DOS功能调用要求在进入“INT 21H”调用前,首先将功能调用号送AH寄存器,并根据功能调用号准备初始数据。也就是说INT 21H的2号功能调用是输出DL寄存器中的字符。“INT 20H”是BIOS中断服务,这一软中断用来正常结束程序。“INT 20H”也可改为“INT 3”,表示程序执行到此暂停。
运行步骤:
①.进入DEBUG界面
设C盘上有https://www.doczj.com/doc/5110020656.html,程序,进入DOS环境后键人DEBUG后回车,即
C:\>DEBUG
随后屏幕显示:
_
“_”号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。现在用A 命令输入程序如下:
②.输入程序并汇编
_A 100
169C:0100 MOV DL,33 ;DEBUG默认16进制数
169C:0102 MOV AH,2
169C:0104 INT 2l
169C:0106 INT 20
169C:0108 ;回车结束程序的输入
至此程序已输入完毕,并汇编成机器指令。现在用G命令运行程序如下:
③.运行程序
_G=0100
3
Program terminated normally
如果现在想分析一下该程序的指令,可以用反汇编命令U作如下操作:
④.反汇编
_U 100,108
169C:0100 B233 MOV DL,33
169C:0102 B402 MOV AH,02
169C:0104 CD21 INT 21
169C:0106 CD20 INT 20
169C:0108
⑤.将机器指令程序送到起始地址为200H的若干单元
_E 0200 B2,33,B4,02,CD,21,CD,20
⑥.执行机器指令程序
_G=0200
3
Program terminated normally
(2).在内存DS:1200H 开始的存储单元中建立一个大写字母区。
①.手工编写程序,实现在内存DS:1200H 开始的存储单元中建立一个大写字母区。
MOV CX,1AH ;循环次数(1AH=26)
MOV BX,1200H ;传送数据区首地址
MOV AL,41H ;大写字母A的ASCII码
LP:MOV [BX],AL ;LP为循环返回的符号地址
INC AL
INC BX
LOOP LP
INT 3 ;断点软中断作程序暂停指令用,便于程序调试
②.进入DEBUG,用A命令输入程序并汇编。
—A 100
20D0:0100 MOV CX,1A ;DEBUG默认16进制数
20D0:0103 MOV BX,1200
20D0:0106 MOV AL,41
20D0:0108 MOV [BX],AL ;由此处可知符号地址LP的偏移地址为0108 20D0:010A I NC AL
20D0:010C INC BX
20D0:010D LOOP 0108 ;LP用偏移地址0108代替
20D0:010F INT 3
20D0:0110 ;回车结束程序的输入
③.用D命令先查看存储单元的原值
—D1200
20D0:1200 00 00 00 00 00 00 00 00 —00 00 00 00 00 00 00 00 ……………………
20D0:1210 00 00 00 00 00 00 00 00 —00 00 00 00 00 00 00 00 ……………………
…………
④.用G命令运行程序
—G=0100
回车后,屏幕上出现当前所有寄存器和标志位的值,并出现DEBUG的提示符。⑤.再检查有关存储单元的内容
20D0:1200 41 42 43 44 45 46 47 48—49 4A 4B 4C 4D 4E 4F 50 ABCDEFGHIJKLMNOP
20D0:1200 51 52 53 54 55 56 57 58—59 5A 00 00 00 00 00 00 QRSTUVWXYZ………
…………
可以看到,在DS:1200开始的存储单元已建立了大写字母区。
3、练习R、U、E、T等命令。
4、退出DEBUG
在DEBUG命令提示符“_”下键入Q命令,即可结束DEBUG的运行,返回DOS操作系统。
四、实验思考题与习题
1、在实验内容(1)中,如何改变程序,在显示器上输出一个英文单词,如“WELCOME”?
2、编写程序,在DS:1000开始的存储单元区建立一个0~~99的数据区,并在DEBUG 界面下编辑、调试、运行,检查其结果。
五、实验设备
微型计算机一台
六、实验报告要求
1、记录实验内容(1)的步骤及程序运行后屏幕上显示的字符。
2、记录实验内容(2)步骤及程序运行前、后的结果。
3、选作实验习题1或2。
4、写出实验小结,说明通过上机操作对DEBUG调试有哪些新的认识。内容包括实验心得(收获)、实验中遇到的问题及解决办法、不足之处和今后应注意的问题等。
实验二寻址方式与基本指令实验
一实验目的
1、熟悉80X86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。
2、掌握汇编语言程序设计上机过程和汇编语言源程序结构,为后续汇编语言程序设计打好基础。
3、熟悉Microsoft的DEBUG或Borland的Turbo Debugger调试工具的使用方法。
二实验预习要求
1、复习汇编语言程序设计上机步骤。
2、复习DEBUG调试工具的使用方法。
3、复习80X86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。
4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际行环境的问题除外),以便在实验时进行验证。
三实验内容及步骤:
1、读懂下列源程序,在未来汇编中编辑名为EX11.ASM的源程序,汇编生成EX11.OBJ 文件,连接生成EX11.EXE文件。使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。
①.程序装入后,代码段寄存器CS的内容为H,代码段第一条可执行指令”MOV AX,DATA”对应的机器代码为H,它是一个字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是,其值为
H 。
②.执行完“MOV DS,DA TA”指令后,数据段寄存器DS的内容为H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为H、H和H。
③.程序中第一条“ADD AL,[BX]”指令时对应的机器代码为H,它是一个
字节指令,注意观察执行该指令时IP值的变化情况;该指令中源操作数的寻址方式为,该操作数所在存储单元的逻辑地址(DS):(BX)为,其物理地址为H;执行完该指令后(AL)= H,CF= ,OF= ,
ZF= ,SF= ,AF= ,PF= ;若操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?若计算结果正确,结果是正数还是负数?
④.执行完第二条“ADD AL,[BX]”指令后(AL)= H,CF= ,OF= ,ZF= ,SF= ,AF= ,PF= ;若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?
⑤.指令“MOV SUM,AL”中,目的操作数的寻址方式为。该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为H。
DA TA SEGMENT
NUM DB 82H,68H,88H
SUM DW ?
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
XOR AX,AX
MOV BX,OFFSET NUM
MOV AL,[BX]
INC BX
ADD AL,[BX]
JNC LP0
INC AH
LP0:INC BX
ADD AL,[BX]
JNC LP1
INC AH
LP1:MOV SUM,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
2、指出下列指令的错误原因,上机运行,观察执行汇编程序(MASM.EXE)后给出的出错信息,改正后再上机验证。
①.MOV BP,BL ②.MOV [BX],[BP]
③.MOV [BX],20H ④.INC [SI]
⑤.ADD AX,[SI+DI] ⑥.SHL AX,3
⑦.PUSH 2000H ⑧.POP AL
⑨.MOV CS,AX ⑩.MOV DS,1000H
四、实验设备
微型计算机一台
五、实验报告要求
1、写出实验内容1中所有问题的正确答案,对实验前做错或做不出来的问题,说明通过上机操作对这些问题有哪些新的认识。
2、写出实验内容2中10条错误指令的错误原因,对可以改正的指令给出其正确形式,并分别记录汇编程序对每条错误指令给出的出错信息。
3、简要说明汇编语言程序设计的步骤,每一步使用什么工具软件,生成什么类型的文件。
4、写出实验小结,内容包括实验心得(收获)、实验中遇到的问题及解决办法、不足之处和今后应注意的问题等。
实验三字符及字符串输入输出与顺序程序设计实验
一、实验目的
1、学习和掌握字符及字符串的输入、输出方法。
2、掌握顺序程序的设计方法。
3、进一步掌握调试工具的使用方法。
二、实验预习要求
1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号为02H)、字符串输入(功能号为0AH)以及字符串输出(功能号为09H)的调用方法。
2、复习BCD码运算调整指令AAA。
3、根据“实验内容及步骤 2”中给出的源程序框架,编写完整的源程序,以便实验时调试。
4、从“实验习题”中任选一道题目,编写源程序,以便上机调试。
三、实验内容及步骤
从键盘输入两个1位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。
1、问题分析
如使用功能号为01H的用于实现单个字符输入的DOS功能调用,接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。由于数字0~9的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD码形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后,结果为0EH(00001110B),显然需要用非压缩BCD码01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII 码)和34H(4的ASCII码),然后调用功能号为02H用于单个字符输出的DOS功能调用将它们显示出来。综上所述,需要考虑以下问题:
①.从键盘输入一个1位十进制数的方法。
通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下:
MOV AH,01H
INT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL 中。
②.提示信息字符串的显示。
通过功能号为9的DOS功能调用实现字符串的显示,注意字符串的最后一个字符必需为…$?。指令格式如下:
MOV DX,OFFSET INFOR1 ;INFOR1为在数据段中定义的要显示的字符
串名。
MOV AH,09H
INT 21H
③.非压缩型BCD码加法调整指令的使用。
设从键盘输入的数值已存放在寄存器AL,BL中,可用下列程序完成数据相加和调整操作:XOR AH,AH
ADD AL,BL
AAA ;执行该指令后,AH中为和的十位数,AL中为和的个位数请读者考虑,为什么要使用指令“XOR AH,AH”,能否不用?
④.计算结果的显示。
执行完AAA指令后,只需分别将AH(十位上的数值)和AL(个位上的数值)加上30H,并依次调用功能号为2 的DOS功能调用来显示字符。具体指令代码如下:
PUSH AX
MOV DL,AH
ADD DL,30H
MOV AH,02H
INT 21H
POP AX
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
2、源程序框架
DATA SEGMENT
INFOR1 DB …Please Input the First Data(<10):$?
INFOR2 DB OAH,0DH,?Please Input the Second Data(<10):$?
INFOR3 DB 0AH,0DH,?The Result is:$?
;0DH和0AH分别为非显示符回车和换行的ASCII码值,美圆符号”$”为字符串
;的结束标志,不能省略。
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
显示提示信息INPOR1并从键盘接收一个字符的指令序列
SUB AL,30H
SUB AL,30H
MOV BL ,AL
显示提示信息INFOR2并从键盘接收一个字符的指令序列
SUB AL,30H
求和并调整指令序列
PUSH AX
显示提示信息INFOR3的指令序列
POP AX
PUSH AX
显示十位及个位上数字的指令序列
MOV AH,4CH
INT 21H
CODE ENDS
END START
3、程序调试
源程序编写完成后,先静态检查,无误后,对源程序进行汇编和连接,生成执行文件。运行该程序,分析运行结果是否正确。若结果不正确,对其修改、调试,直至正确为止。
四、实验习题
1、设a、b、c、d为四个压缩型BCD码,它们被存放在内dbcd开始的4个存储单元中。计算a+b+c+d,并将结果在屏幕上显示出来。程序编写完成并运行正确后,打开源程序,改变a、b、c、d的内容,然后重新进行汇编、连接并运行程序,检查程序运行结果与手工计算结果是否相符。
下面给出几组实验数据:
①.a=11,b=23,c=25,d=31
②.a=10,b=20,c=30,d=40
③.a=45,b=45,c=45,d=45
④.a=88,b=99,c=77,d=66
(注意压缩型BCD码的表示方法:十进制数38表示成压缩型BCD码时应写成38H。)
2、从键盘输入两个一位十进制数,计算这两个数之积,并将其结果在屏幕上显示出来。
3、从键盘输入0~9中任意一个自然数,将其立方值在屏幕上显示(使用查表法实现)出来。
五、实验设备
微型计算机一台
六、实验报告要求
1、补全“实验内容”中源程序框架内未写出的程序段,并说明在调试该程序过程中遇到了哪些问题,是如何处理的。
2、从“实验习题”中任选一道题目,画出流程图,编写源程序,并说明在调试过程中遇到了哪些问题,是如何处理的。
3、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题等。
实验四分支程序设计实验
一、实验目的
1、掌握分支程序的设计方法。
2、掌握宏定义及宏调用的基本方法。
3、了解小写字母和大写字母的ASCII码表示及其转换方法,了解数字及其他字符的ASCII码表示方法。
4、进一步掌握调试工具的使用方法。
二、实验预习要求
1、复习比较指令、条件转移指令的用法
2、复习宏定义及宏调用的基本方法
3、根据“10.3.3实验内容中”给出的流程图和程序框架编写源程序,以便上机调试。
4、程序框架中显示提示信息的指令序列用宏调用实现。
5、从“10.3.4实验习题”中任选一道题目,编写源程序,以便上机调试。
三、实验内容及步骤
从键盘输入一字符,判断该字母是小写字母、大写字母、数字或是其他字符。若输入为小写字母,则显示“You Input a Lowercase Letter!”;若输入是大写字母,则显示“You Input a Uppercase Letter!”。若输入为数字,则显示“you Input a Digit!”若输入为数字,则显示“You Input other Letter!”。
1、编程指导
数字0-9的ASSCII码为30H-39H;大写字母的ASSII码为41H-5AH,小写字母的ASCII 码为61H-7AH。本题目将字符分为小写字母、大写字母、数字及其他字符,根据键入字符的ASCII码值判断其所属类型,并显示相应的信息。字符串显示使用的功能号为09H的DOS 功能调用,接收键盘输入的单个字符使用功能号为01H的DOS功能调用。
2、流程图及程序框架
①.流程图(如图10.1所示)。
图5.1 流程图
开始
显示提示信息”Please Press Any Key to Input aLetter”及功能号为1的接收键盘输入单个字符的指令序列.
AL ≤?9??
AL <?0??
AL <?A ??
AL ≤?Z??
AL <?a??
AL ≤?z?? 输入的是其他字符,显示信息
输入的是数据,显示有关信息
输入的是小写字母,显示有关信息
输入的是大写字母,显示有关信息 结束
Y
Y
Y
Y
Y
Y
N
N
N
N
N
N
⑵、程序框架
DA TA SEGMENT
INFOR1 DB 0AH,0DH,“Please Press any Key to Input a Letter:$”
INFOR2 DB 0AH ,0DH ,“You Input a Lowercase Letter! $”
INFOR3 DB 0AH ,0DH,“You Input a Uppercase Letter !$”
INFOR4 DB 0AH,0DH,“You Input a Digit! $”
INFOR5 DB 0AH,0DH,“You Input Other Letter! $”
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DA TA
MOV DS,AX
显示信息“Please Press any Key toInput a Letter”的指令序列以以及接收
从键盘输入一个字符的指令序列
CMP AL,?0?
JB OTHER
CMP AL,?9?
JBE DIGIT
CMP AL,?A?
JB OTHER
CMP AL,?Z?
JBE UPPER
CMP AL,?a?
JB OTHER
CMP AL,?z?
JBE LOWER
JMP PEND
LOWER:
显示“You Input a Lower Letter!”的指令序列
JMP PEND ;注意执行完一个分支后应使程序跳出
UPPER:
显示“You Inptut a Uppercase Letter!”的指令序列
JMP PEND
DIGIT :
显示“You Input a Digit !”的指令序列
JMP PEND
OTHER:
显示“You Input Other Letter!”的指令序列
PEND:MOV AH,4CH
INT 21H
CODE ENDS
END START
四、实验习题
1.在屏幕上显示信息“Are You Really Want to Exit?”,然后从键盘输入一个字符。若输入“Y”或“y”,则显示“Thank You for Your Using!”后程序结束;若输入“N”或“n”,则显示“Let‘s Continue!”后程序结束;若输入其他字符,则显示“You Press an Error Key!”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。
2. 在屏幕上显示如下信息:
1、……………………………………Panda
2、……………………………………Cat
3、……………………………………Rabbit
4、 (i)
5、……………………………………EXIT
(please choose 1 ,2,3,4 or 5)
若输入1,则显示“I Like Pande ”后程序结束;若输入2,则显示“I Like Cat”后程序结束;若输入3,则显示“I Like Rabbit”后程序结束;若输入4,则显示“I Don‘t Like Pig”
后程序结束;若输入5,则程序直接结束;若输入其他字符,则显示“You Press an Error Key !”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。
五、实验设备
微型计算机一台
六、实验报告要求
1、补全“实验内容”中源程序框架内示写出的程序代码,并说明在调试该程序过程中遇到了哪些问题,是如何处理的。
2、从“实验习题”中任选一道题目,画出流程图,编写源程序,并说明了在调试过程中遇到了哪些问题,是如何处理的。
3、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题等。
实验五循环程序设计实验
一、实验目的
1、掌握循环程序的设计方法。
2、掌握比较指令、转移指令和循环指令的使用方法。
3、进一步掌握调试工具的使用方法。
二、实验预习要求
1、复习比较指令、条件转移指令和循环指令。
2、复习循环程序的结构、循环控制方法等知识。
3、读懂“实验内容”中给出的将十进制数转换成二进制数以及将二进制数转换成十进制数的程序。
4、根据“实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。
5、从“实验习题”中任选项一道题目,编写源程序,以便上机调试。
三、实验内容及步骤
计算1+2+3…+n=?,其中n通过键盘输入,累加和小于216。要求在屏幕上提供如下信息:
Please input a number(1~361);出现此信息后通过键盘输入一个1~511的无符号整
;数,使累加和小于一个16位无符号二进制数所能
表
;示的范围。
1+2+…n=sum ;其中n为用户输入的数,sun为所求累加和。
程序运行时如输入222,回车后屏幕显示则如图7.1所示。
图7.1 累加和程序运行结果显示
1、编程指导
①.键盘输入的十进制数,如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环次数进行控制,是本程序首先要解决的问题。将键盘输入的十进制数转换为二进制数的程序清单如下:
DA TA SEGMENT
INF1 DB …Pease Input a Number(0-65535):$?
IBUF DB 7,0,6DUP(?)
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA
START: MOV AX,DA TA
MOV DS,AX
MOV DX,OFFSET INF1
MOV AH,09H
INT 21H
MOV DX,OFFSET IBUF ;键入一个十进制数(<512)
MOV AH,OAH
INT 21H
MOV CL,IBUF+1 ;十进制数的位数送CX
MOV CH,0 (cx)=3
MOV SI,OFFSET IBUF+2 ;指向输入的第一个字符(最高位)
MOV AX,0 ;开始将十进制数转换为二进制数AGAIN:MOV DX,10 ;(0*10+a4)*10+…)*10+a0
MUL DX
AND BYTE PTR[SI],0FH
ADD AL,[SI]
ADC AH,0
INC SI
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START
本程序功能:从键盘接收一个无符号十进制整数(小于65535),将其转换为二进制数,转换结果存在AX寄存器中。
②.累加结果为一个16位的二进制数,为了显示结果,必须把它们转换为十进制数。将二进制数转换成为十进制数的的程序清单如下:
DA TA SEGMENT
OBUF DB 6 DUP(?)
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET OBUF+5
MOV BYTE PTR[BX],…$?
MOV CX,10 ;做(DX):(AX)/10运算LOOP1: MOV DX,0 ;被除数高16位清0
DIV CX
实验要求 1、带预习报告上机 根据实验要求,作好充分预习,设计实验硬件原理及接线图(必须标出相关的管脚号,以备硬件连线及测试),画出程序流程图,写出源程序清单,规划好调试步骤,上机时带预习报告。注意:无预习报告者不得做实验。 2、认真实验,经教师检查后,方可离开 注意掌握软、硬件调试方法,提高分析问题、解决问题的能力。对所编写的程序必须十分清楚,作到知其然,亦知其所以然,硬件电路原理清楚,熟练应用常规的仪器(如万用表、示波器等)检查测试硬件电路。指导教师还会根据实验要求,提出问题。3、按时提交实验报告 实验结束后,在预习报告的基础上,完成实验报告,并于下次实验时交给指导教师。 实验报告格式 实验* ***** ***** ***** 一、实验目的 二、实验内容 三、硬件原理及接线图 四、程序流程图 五、程序清单 六、实验步骤 七、实验结果及现象分析 八、收获及建议 测13实验安排: 地点:综合实验楼0701 实验周次星期小节 一 6 五1,2 二8 五1,2 三10 五1,2 四12 五1,2 五14 五1,2
实验一汇编语言程序的调试 一、实验目的 1、掌握8086汇编程序的编辑、编译、连接及运行过程。 2、掌握使用HQFC软件调试程序的方法。 二、实验内容:编制程序并调试 1、上机调试P45 项目1程序。 要求:1)写出调试步骤 2)记下代码段数据。 3)记下数据段数据 4)用单步调试法调试,记下每句程序目的操作数执行结果。观察每句程序 执行过程中CS、 IP、 FLAGS寄存器的变化。 2、上机调试P54 项目2程序,用单步调试法指出每句程序的调试结果。 要求:1)记下代码段数据。 2)记下数据段数据 3)记下程序执行前附加段数据、程序执行后附加段数据。 3)用单步调试法调试,记下lop句之前每句程序目的操作数执行结果。 观察其它句程序的执行结果,观察每句程序执行过程中CS、 IP、 FLAGS寄存器的 变化。 三、调试步骤 1、编辑源程序,形成****.ASM文件(可用HQFC软件或XP系统下的记事本编辑源程序) (注:在E:盘上建立一个你自己的文件夹,保存你自己的文件) 2、编译,形成****.OBJ文件(可用HQFC软件的编译功能) 3、链接,形成****.EXE文件(可用HQFC软件的构建功能) 4、运行(或调试)(可用HQFC软件的重构运行功能或开始调试) 四、调试步骤参考 1、编译(编译) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择编译选项则程序对当前ASM源文件进行编译,编译调试窗口中输出汇编的结果,若程序汇编有错,则详细报告错误信息。双击输出错误,集成开发环境会自动将错误所在行代码显示。 2、构建(汇编+链接) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择汇编+链接选项则程序对当前ASM源文件进行汇编与链接,编译调试窗口中输出汇编与链接的结果,若程序汇编或链接有错,则详细报告错误信息。双击输出错误,集成开发环境会自动将错误所在行代码显示。 3、重构运行(汇编+链接+执行) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择汇编+链接+执行选项则程序对当前ASM源文件执行,程序自动运行。
微机原理与接口技术实验报告 班级:自动化(铁道信号) 姓名: ***** 学号: 1121**** 授课教师:福恩
目录 1.实验一 (3) 2. 实验二 (8) 3.实验三 (13) 4.实验四 (22) 5.实验五 (26) 6.实验六 (33) 7.参考文献 (38)
实验一交通灯控制实验 一.实验目的 通过应用接口技术设计十字路口、复杂路口交通灯控制系统,学会应用“微机原理与接口技术”课程所学的X86汇编语言和接口技术掌握可编程并行接口芯片的硬件设计、软件编程,实现十字路口交通灯的模拟控制并思考计算机如何应用在各种控制系统中。 (1)掌握利用X86汇编语言技巧 (2)掌握X86微处理器与可编程并行接口芯片8255A硬件电路设计 (3)熟悉模拟交通灯控制的实现方法并思考如何应用在实际中。 二.实验容 设计一个交通控制系统,该控制系统工作后,交通灯按照如下规律变化: (1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。 (2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。 (3)南北路口的红、东西路口的绿灯同时亮3秒。 (4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。 (5)返回(1)依次循环。 三.实验电路 如下图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律燃灭。 8255动态分配地址: 控制寄存器:0EC0BH A口地址: 0EC08H C口地址: 0EC0AH
红黄绿红黄绿 图1-1 交通灯实验电路图四.程序流程图 五.源程序 CODE SEGMENT ASSUME CS:CODE ;********************************** 工作状态控制字设置 START: MOV DX,0EC0BH ;写控制端口,地址0EC0BH MOV AL,10010000B ;C口方式0输出 OUT DX,AL
微型计算机原理与应用实验指导书 上海大学通信学院
2010 年4 月 PC微机原理实验一 一、目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的 功能。 要求:在PC机上完成下列程序的调试运行,并写出运行结果。二、1.DEBUG的基本操作:(详细内容请参阅教材“程序的调试,P173”和“附录F 调试程序DEUBG的使用,P499”) (1)从WINDOWS进入DOS之后,输入命令启动DEBUG: C:>DEBUG 回车 (2)输入R命令,查看和记录CPU各个寄存器的内容: -R回车 看到什么 (3)输入A命令,汇编下面的字符“WINDOWS”显示程序: -A100 ;从偏移地址是0100H处开始写指令 MOV AH,2 MOV DL, 57 ;57H 是“W ”的ASCII码 INT 21 ;INT 21是DOS 功能调用,AH=2代表2号功能 ;这3句合起来的功能是:显示DL中的字符 MOV DL, 49 INT 2 1 MOV DL, 4E INT 21 MOV DL, 44 INT 2 1 MOV DL, 4F INT 2 1 MOV DL, 57 INT 2 1 MOV DL, 53 INT 2 1 INT 3 ;功能是产生一个断点,不要省略 (4)输入U 命令反汇编上面的程序: -U 100 问:这里100代表什么 (5)输入G命令连续运行上面的程序,记录运行结果:
-G=100 ,57,53依次分别改为574F4E57 (6)输入E命令把上面程序中的数据,49,,44,,45:,,45,4C43,4F4D,-E 103 回车(以下同) -E 107 10B-E -E 10F 113-E 117-E 11B-E (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 回车 注意: 下面第2—第8段程序是7个实用的小程序,若不小心打错指令,可以这样修改: 例如:CS:0100 B300 MOV BL,0 0102 53 PUSH BX 0103 B220 LP1: MOV DL,20 要修改“PUSH BX”,因为这条指令的IP是0102,所以按以下操作: -A 0102 回车,然后把正确的指令打入,“-A ”是汇编指令。 如果要查看0100以后的指令及相应的机器代码,可以 -U 0100 回车,能够看到CS:0100开始的指令及相应的机器代码。“-U ”是反汇编 若发现有误用,用“-A XXXX 回车”,重打这条指令即可 2.编制一个能在CRT上连续显示A,B,C,D······Z大写英文字符的源程序,并在源程序下汇编调试机运行。
微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。二、实验内容 在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的 30H~7FH 单元清零。 三、实验设备 PC机一台。 四、实验步骤 用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。五、实验思考 1.如果需把30H-7FH 的内容改为55H,如何修改程序? 2.如何把128B的用户RAM全部清零? 六、程序清单 文件名称:CLEAR.ASM ORG 0000H CLEAR: MOV R0,#30H ;30H 送R0寄存器 MOV R6,#50H ;50H 送R6寄存器(用作计数器) CLR1: MOV A,#00H ;00 送累加器A MOV @R0,A ;00 送到30H-7FH 单元 INC R0 ;R0 加1 DJNZ R6,CLR1 ;不到50H个字节,继续 WAIT: LJMP WAIT END 实验二数据传送 一、实验目的 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、实验设备 PC机一台。
微机原理与接口技术实验报告
2
3
实验一:数据传送 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 1.学习程序设计的基本方法和技能,掌握用汇编语言设计、编写、调试和运行程序的方法; 学习用全屏幕编辑软件QEDIT.EXE建立源程序(.ASM文件); 学习用汇编软件MASM.EXE对源文件汇编产生目标文件(.OBJ文件); 学习用连接程序LINK.EXE对目标文件产生可执行文件(.EXE文件); 学习用调试软件TD.EXE调试可执行文件; 2.掌握各种寻址方法以及简单指令的执行过程。 二.实验器材 PC机 三.实验组织运行要求 1.利用堆栈实现AX的内容与BX的内容进行交换。堆栈指针SP=2000H,AX=3000H,BX=5000H; 2.汇编、调试、观察、记录结果; ⑴用QEDIT.EXE软件输入汇编语言源程序,以.ASM格式文件存盘; ⑵用MASM对源程序进行汇编产生二进制目标文件(.OBJ文件),再用连接程序LINK产生可执行文件(.EXE文件); ⑶用调试软件TD调试、运行程序,观察、记录结果。 四.实验步骤 1.进入子目录E:>\SY86后,利用QEDIT.EXE(简称Q)送入以下汇编语言源程序,并以M1.ASM文件存盘 ⑴汇编语言程序的上机过程 ①进入\SY86子目录 E:>CD\SY86 E:\SY86> ②进入QEDIT.EXE 编辑界面 E:\SY86> Q ③输入文件名*.ASM(如M1.ASM)后,输入源程序 源程序 DATA SEGMENT PARA PUBLIC’DATA’ ;数据段定义 DB 512 DUP(0) DATA ENDS STACK SEGMENT PARA STACK’STACK’ ;堆栈段定义 DB 512 DUP( ?) 4
新疆农业大学机械交通学院 实习(实验)报告纸 班级:机制072 学号: 073731234 姓名:唐伟 课程名称:微机原理及接口技术实习(实验)名称: DEBUG软件的使用 实验时间: 6.22 指导教师签字:成绩: —、实验目的 1.学习DEBUG软件的基本使用方法。 2.掌握8088/8086的寻址方式。 3.掌握数据传送、算术运算逻辑运算等类指令的基本操作。 二、实验内容与步骤 实验内容: 修改并调试以下程序,使之完成30000H开始的内存单元中存入31个先自然递增然后有自然递减的数据(00H~0F~00H)的功能。程序从CS:0100H开始存放。调试完成后程序命名为PCS.EXE并存盘。 实验步骤: (1)用A命令输入程序; (2)用反汇编U命令显示程序及目标码; 存盘程序命令为PCS1.EXE;
三、思考题 1.EXE文件程序的第一条可执行指令的IP等于多少? 答:EXE文件程序的第一条可执行指令的IP等于0010 。 2.在DEBUG环境下显示的程序和数字是什么形式?标号又是什么形式? 答: DEBUG把所有数据都作为字节序列处理。因此它可以读任何类型的文件。DEB UG可以识别两种数据: 十六进制数据和ASCⅡ码字符。它的显示格式是各个字节的十六进制值以及值在32与126之间的字节的相应ASCⅡ码字符。DEBUG总是用四位十六进制数表示地址。用两位数表示十六进制数据。不支持标号。 3.试述本次实验中你学会的DEBUG命令? 答:本次试验我学会了汇编命令(A命令)、.反汇编命令(U命令)、显示当前环境和寄存器内容(R命令、以十六进制和ASCII码形式显示内存单元内容(D命令)
微机原理及应用实验指导书 南京理工大学机械工程学院 2011年10月10日
实验1 基本操作实验 1. 实验目的 (1) 掌握TD-PITC 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 (2) 掌握使用运算类指令编程及调试方法; (3) 掌握运算类指令对各状态标志位的影响及其测试方法; (4) 学习使用软件监视变量的方法。 2. 实验设备 PC机一台,TD-PITC 实验装置一套。 3. 实验内容及步骤 通过对样例程序的操作,学会在TD-PITC境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会: ●如何设置断点; ●如何单步运行程序; ●如何连续运行程序; ●怎样查看寄存器的内容; ●怎样修改寄存器的内容; ●怎样查看存储器的内容; ●怎样修改存储器的内容。 3.1 实验内容1――――BCD码转换为二进制数 实验内容: 将四个二位十进制数的BCD 码存放于3500H 起始的内存单元中,将转换的二进制数存入3510H 起始的内存单元中,自行绘制流程图并编写程序。 参考实验程序清单如下: SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: XOR AX, AX MOV CX, 0004H MOV SI, 3500H MOV DI, 3510H A1: MOV AL, [SI] ADD AL, AL MOV BL, AL
ADD AL, AL ADD AL, AL ADD AL, BL INC SI ADD AL, [SI] MOV [DI], AL INC SI INC DI LOOP A1 A2: JMP A2 CODE ENDS END START 实验步骤: 1)运行Wmd86 软件,进入Wmd86 集成开发环境。 2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1 语言环境选择界面 3)语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-2所示。默认文件名为Wmd861。 图1-2 新建文件界面 4)编写实验程序,如图1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。
实验报告1 实验项目名称:I/O地址译码;简单并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握I/O地址译码电路的工作原理,简单并行接口的工作原理及使用方法。 二、预备知识: 输入、输出接口的基本概念,接口芯片的(端口)地址分配原则,了解译码器工作原理及相应逻辑表达式,熟悉所用集成电路的引线位置及各引线用途;74LS245、74LS373的特性及作用。 三、实验内容245输入373输出 使用Protues仿真软件制作如下电路图,使用EMU8086编译软件编译源程序,生成可执行文件(nn . exe),在Protues仿真软件中加载程序并运行,分析结果。 编程实现:读8个开关的状态,根据输入信号控制8个发光二极管的亮灭。 图1-1 245输入373输出 四、程序清单
五、实验结果 六、结果分析 七、思考题: 1、如果用74LS373作输入接口,是否可行?说明原因;用74LS245作输出接口,是否可行?说明原因。
实验报告2 实验项目名称:可编程定时器/计数器;可编程并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握8253的基本工作原理和编程应用方法。掌握8255的工作原理及使用方法。 二、预备知识: 8253的结构、引脚、控制字,工作方式及各种方式的初始化编程及应用。 8255的内部结构、引脚、编程控制字,工作方式0、1、2的区别,各种方式的初始化编程及应用。 三、实验内容: ⑴8253输出方波 利用8253的通道0和通道1,设计产生频率为1Hz的方波。设通道0的输入时钟频率为2MHz,8253的端口地址为40H,42H,44H,46H。通道0的输入时钟周期0.5μs,其最大定时时间为:0.5μs×65536 = 32.768ms,要产生频率为1Hz(周期= 1s)的方波,利用;一个通道无法实现。可用多个通道级连的方法,将通道0的输出OUT0作通道1的输入时钟信号。设通道0工作在方式2(频率发生器),输出脉冲周期= 10 ms,则通道0的计数值为20000(16位二进制)。周期为4 ms的脉冲作通道1的输入时钟,要求输出端OUT1输出方波且周期为1s,则通道1工作在方式3(方波发生器),计数值为100(8位;二进制)。硬件连接如图2-1。
微机原理与接口技术李珍香版十个实验程 序
实验一 1.实验目的:掌握汇编语言源程序的结构。 2.实验内容:显示一串字符串“hellow world! 班级,学号”。3.实验代码: DATA SEGMENT MS DB ' Hello,World!$' NS DB ' 151044A,151044106$' DATA ENDS STACK SEGMENT STACK DW 50 DUP(?) STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE:CODE,SS:STACK START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET MS MOV AH,9 INT 21H MOV AX,DATA MOV DS,AX
MOV DX,OFFSET NS MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 4.实验结果:
实验二 1.实验目的:熟悉汇编语言源程序的编辑、汇编、连接、调试 过程 2.实验内容:两个8位16进制数相加(生日+当天日期) 3.实验代码: DATA SEGMENT SR DD 19970925H RQ DD 20171111H DATA ENDS STACK SEGMENT STACK DB 50 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV AX,WORD PTR SR ADD AX,WORD PTR RQ
实验一 DEBUG命令及其基本操作 一.实验目的: 1.熟练掌握DEBUG的常用命令,学会用DEBUG来调试程序。 2.深入了解数据在存储器中的存取方法,了解堆栈中数据的压入与弹出方法。 3.掌握各种寻址方法,了解简单指令的执行过程。 二、实验容: 1.打开计算机,在WINXP操作系统下,点击“开始”,选择“运行”,在“打开”一栏中输入“debug”,运行DEBUG应用程序,将出现DEBUG的提示符“-”。 2.在DEBUG提示符后键入字母“-a100”,回车后,屏幕上就会出现下面类似的容: (具体到每个计算机所产生的段地址和偏移地址可能有所不同) 这表示在地址1383:0100处,DEBUG等待用户键入程序助记符,下面键入程序: 3.在DEBUG的提示符后键入G,这是执行程序的命令,然后回车,就可以看到结果了。 4.现在让我们用“d”命令来看一下存储器 在100H~107H这8个单元,程序覆盖了原来的容,右边的字符是组成程序的ASCII码等价字符,圆点表示不可显示字符。 5.下面我们用反汇编命令来查看一下所键入的程序。“U”命令的格式是“U起始地址,终止地址”,即把起始地址到终止地址之间的十六进制码反汇编成汇编语言助记符语句。键入: 大家在屏幕上不仅可以看到地址和助记符,而且还可以看到与汇编语言等价的机器语言。6.现在我们修改存储单元的容,看看显示情况和变化。 我们看到显示的结果发生了变化,这是因为DOS的2号功能调用是显示输入数据的ASCII 码字符。 7.下面我们给程序命名并存盘。在键入“n”后紧跟程序名及扩展名
因为文件的字节数必须事先放在BX和CX中,其中BX保存高16位,CX保存低16位,整个32位的数保存文件的字节数,一般来说,BX设置为0,因为CX可存放的字节数为64K,对于一般的程序已足够了。 8.结束后可用Q命令退出DEBUG程序。 三、实验习题 1.写出完成下列功能的指令序列 (1)传送20H到AL寄存器 (2)将(AL)*2 (3)传送25H到BL寄存器 (4)(AL)*(BL) 问最后的结果(AX)=? 单步执行结果: 2.分别写出完成下列指令要求的指令: (1)将BX的低4位清零; (2)将AX的高4位置1; (3)将DX的低4位取反; (4)将CX的中间八位清零; (5)将AX中与BX中的对应位不相同的位均置1.
实 验 报 告 课 程 名 称 实 验 名 称 实 验 日 期 学 生 专 业 学 生 学 号 学 生 姓 名 教 师 姓 名 成 绩 南京理工大学机械工程学院 微机原理及应用 实验1 DEBUG 操作实验 实验2 汇编程序设计实验 实验3 8253定时/计数器实验 实验4 8255 并行接口实验 年 月 日 至 年 月 日
实验一DEBUG命令及其操作 一、实验目的 1.熟练掌握debug的常用命令,学会用debug来调试程序。 2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。 3.掌握各种寻址方法以及简单指令的执行过程。 二、实验要求 1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。 2.本实验要求在PC机上进行。 3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。三、实验内容 ●实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。 实验报告要求: 1.写出运行结果; 2.小结debug常用命令及使用体会 答:1.原文已给出(略) 2.a 汇编 d显示内存单元内容 e修改单元内存内容 g执行命令 t单步(或多步)调试 n指定文件路径文件名(含扩展名) u反汇编 r查看寄存器值及修改 l加载程序 w写盘命令 体会:提升学习热情和动手能力有助于理解代码执行过程 ●实验内容2 设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。 实验报告要求: 1.写出完成上述功能的程序段; 2.单步执行,并记录寄存器AX, BX及堆栈指针SP的值 答: A100 Mov ax,3000 ;ax:3000 bx:0000 sp:ffee Mov bx,5000 ;ax:3000 bx:5000 sp:ffee Push ax ;ax:3000 bx:5000 sp:ffec
微机原理与接口技术实验指导书 编者:王亭岭 华北水利水电学院 电气学院自动化教研室 二零一二年三月
目录 实验一标志寄存器应用 (1) 实验二指令寻址方式练习 (4) 实验三分支结构程序设计 (6) 实验四循环结构程序设计 (7) 实验五子程序结构程序设计 (8) 实验六DOS系统功能调用程序设计 (10) 实验七BIOS中断调用程序设计 (12) 实验八定时器中断程序设计 (14)
实验一标志寄存器应用 一、实验目的与要求 1.掌握汇编程序的编译过程; 2.掌握8086的标志寄存器的特点。 二、实验内容 微型计算机(80x86系列)。 四、实验参考程序 DATA SEGMENT A DW 123 B DW 456 SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA START: MOV AX , DATA MOV DS , AX MOV AX , A SUB AX , B MOV SUM , AX MOV AH,4CH INT 21H CODE ENDS END START 五、实验步骤 步骤一、用鼠标单击开始菜单,单击运行。如下图所示:
步骤二、在运行窗口中键入cmd,回车进入命令提示符。如下图所示: 步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。如下图所示:1.C:\>D: 回车 2.D:\ >CD MASM 回车 3.D:\MASM>MASM SY1.ASM 回车 4.D:\MASM>LINK SY1.OBJ 回车
步骤四、在命令提示行中运行并调试汇编程序。如下图所示:1.D:\MASM>SY1.EXE 回车 2.D:\MASM>DEBUG SY1.EXE 回车 六、实验结论 1.程序运行后变量SUM的值是多少? 2.程序运行前后标志寄存器的各标志位有何变化? 3.分析实验结果及所遇到的问题,并说明解决的方法。
微型计算机原理与应用 实验指导书 上海大学通信学院 2010 年 4 月
PC微机原理实验一 一、目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的 功能。 二、要求:在PC机上完成下列程序的调试运行,并写出运行结果。1.DEBUG的基本操作:(详细容请参阅教材“4.5程序的调试,P173”和“附 录F调试程序DEUBG的使用,P499”) (1)从WINDOWS进入DOS之后,输入命令启动DEBUG: C:>DEBUG 回车 (2)输入R命令,查看和记录CPU各个寄存器的容: -R回车 看到什么? (3)输入A命令,汇编下面的字符“WINDOWS”显示程序: -A100 ;从偏移地址是0100H处开始写指令 MOV AH,2 MOV DL, 57 ;57H 是“W”的ASCII码 INT 21 ;INT 21是DOS 功能调用,AH=2代表2号功能 ;这3句合起来的功能是:显示DL中的字符 MOV DL, 49 INT 21 MOV DL, 4E INT 21 MOV DL, 44 INT 21 MOV DL, 4F INT 21 MOV DL, 57 INT 21 MOV DL, 53 INT 21 INT 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
实验一实验环境熟悉与简单程序设计 实验目的 (1)掌握DEBUG调试程序的使用方法。 (2)掌握简单程序的设计方法。 实验内容 编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。如: BH=10110010B 则运行程序后 DH=00001011B DL=00000010B 实验准备 (1)熟练掌握所学过的指令。 (2)根据实验内容,要求预先编好程序。 实验步骤 (1)利用DEBUG程序输入、调试程序。 (2)按下表要求不断地修改BH的内容,然后记录下DX的内容。 实验报告 (1)给出程序清单。 (2)详细说明程序调试过程。
程序: CODE SEGMENT START : MOV BH,00111111B MOV AL,BH MOV CL,4 SHR AL,CL MOV DH,AL MOV AL,BH AND AL,00001111B MOV DL,AL MOV CL,0 CODE ENDS END START
实验二简单程序设计 实验目的 (3)掌握DEBUG调试程序的使用方法。 (4)掌握简单程序的设计方法。 实验内容 试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello world My name is Li Jianguo 参考程序如下:(有错) data segment out1 db 'Hello world' ax db 'My name is Li Jianguo' data ens code segment assume cs:code;ds:data lea dx,out1 mov ah,2 int 21h mov dl,0ah mov ah,2
微机原理实验一简单I/O口扩展实验 一、实验目的 1. 熟悉74LS273、74LS244的应用接口方法。 2. 掌握用锁存器、三态门扩展简单并行输入输出口的方法。 二、实验内容 用逻辑电平开关作为74LS244(U10)的输入,用发光二极管作为74LS273的输 出,编写程序,使得逻辑电平开关的输入状态从发光二极管上显示出来。 三、实验器材 微机、EL型微机教学实验箱 四、实验原理图 4LS273 4 4LS02 S O S I C S U 1 R K1-K8是开关的输出插孔,L1-L8是发光二极管的输入插孔,SI0-SI7是74LS244 的输入插孔,SO0-SO7是74LS273的输出插孔,CSU10\是74LS244的地址译码输入插孔,CSU8\是74LS273译码输入插孔,以上插孔实验时均需连线,原理图中其它已注的和未标注的引脚均以连好或实验不需要。 74LS244
五、实验步骤 1.连线:将74LS244的输入SI0-SI7分别与逻辑电平开关电路的 K1-K8相连,从I/O地址片选信号 CS0\~CS7\中任选一个与 U10的片选信号相连(例如CS0\)。将74LS273(U8或U9)的输出(CS0\~CS7\)分别与发光二极管电路的 L1~L8相连,从I/O地址片选信号CS0\~CS7\中任选一个与U8或U9的片选信号相连。(如CS1\)2.编辑程序,单步运行,调试程序 3.调试通过后,全速运行,观察实验结果 4.编写实验报告 六、编程提示 逻辑电平开关拨上时为5V,拨下时为0V,发光二极管输入‘1’为亮,‘0’为灭。从U10读入的数据后从输出口输出。 七、程序框图
课程名称:_________微机原理及应用___________指导老师:_____钟崴_______成绩:__________________ 实验名称:_________数据传送___________实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求(必填) 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容和原理(必填) 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、主要仪器设备(必填) PC机一台。 四、操作方法和实验步骤 逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、程序清单 1. ORG 0000H CLEAR MOV R0,#30H ;间接寻址 MOV A,#40H ;立即寻址 MOV @R0,A ;间接寻址 MOV A,30H ;直接寻址 MOV DPTR,#0100H ;间接寻址 MOV A,#36H MOVX @DPTR,A MOV R0,#50H ;立即寻址 MOV A,#10 MOVC A,@A+DPTR ;变址寻址 END
微机原理与接口技术课程设计报告题目:继电器控制实验设计 学院电子与信息工程学院 专业通信工程年级 10级 学生姓名 xx 学号 _ xxxxxxxx 指导教师 xx 完成时间 2012/11/9 二O一二年十一月
目录 摘要 (3) 一.实验目的 (4) 二.实验原理 (4) 1 实验基本原理 (4) 2.1继电器结构原理图 (5) 2.2继电器工作原理 (5) 3.1 8255A组成 (6) 3.2 8255A结构框图 (7) 3.3 8255A工作方式 (7) 三.实验内容 (11) 四.程序设计 (12) 4.1程序流程图 (12) 4.2程序代码 (12) 五.实验小结........................................................ 错误!未定义书签。 六.参考文献 ......................................................... 错误!未定义书签。
摘要 现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件,另一方面又要为电子线路的电气电路提供良好的电气隔离,以保护电子电路和人身的安全。继电器便能完成这一桥梁作用。 本课程设计主要采用了控制继电器和8255A芯片来完成。电路的控制端为高电平时,继电器工作常开触点吸合,连触点的LED灯被点亮。当控制端为低电平时,继电器不工作。执行时,对应的LED将随继电器的开关而亮灭。 关键词:控制继电器 8255A芯片
一.实验目的 1、进一步熟悉汇编语言的设计编写 2、掌握继电器控制的基本原理 3、掌握继电器控制编程方法 4、掌握8255芯片的应用 二.实验原理 1、利用8255A PA0输出高低电平,控制继电器的开合,以实现对外部装置的控制。 硬件线路原理图接线如下: 2、继电器 在现代工业中,人员和电子电路安全保障一直是首要考虑的问题,尤其在一些高危恶劣环境下,如高温高压等,如何在保障操作人员和电子电路安全的前提下对电路进行良好地控制便成为了工业进步不可回避的问题。一方面要使电子电路的控制信号能够控制电气电路的执行元件,另一方面又要为电子线路的电气电路提供良好的电气隔离,以保护电子电路和人身的安全,符合这种需求的元件便是继电器。 控制继电器是一种自动电子控制器件,它适用于远距离接通和分断交、直流小容量控制电路, 它具有控制系统和被控制系统,通常应用于自动控制电路中,
课程设计实验报告 课程:现代微机原理与接口技术题目:键盘扫描实验
班级:数字媒体 1004 学号: 0305100417 学生:海洋 指导老师:天天 日期: 2012.6.18 一、实验目的 (1)掌握键盘扫描的应用及编程 (2)掌握LED的应用 二、实验设备 PC计算机一台,TD-PIT + 实验系统一套。 三、实验原理 (1)8255芯片:8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。可与外设并行进行数据交换。A口和B口具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换。把8255并口和键盘,组成一个键盘装置。通过cpu对8255的控制最总达到键扫的目的。每一个键对应一个ASCII 码字符,通过8255的输入和输出,最终显示在屏幕上。 (2)LED数码显示原理:数码管的 7 个段及小数点都是由 LED 块组成的,显示方式分为静态显示和动态显示两种。数码管在静态显示方式时,其共阳管的位选信号均为低电平,四个数码管的共用段选线 a、b、c、d、e、f、g、dp 分别与单片机的 8 根 I/O 口线相连,显示数字时只要给相应的段选线送低电平。数码管在动态显示方式时,在某一时刻只能有一个数码管被点亮显示数字,其余的处于非选通状态,位选码端口的信号改变时,段选码端口的信号也要做相应的改变,每位显示字符停留显示的时间一般为1-5ms,利用人眼睛的视觉惯性,在数码管上就能看到相当稳定的数字显示。 (3)键盘扫描原理:第一步,使行线为编程的输入线,列线是输出线,拉低所有的列线,判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则所有的行
实验一 MASM For Windows 的使用及顺序程序设计 一、实验目的 1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。 2、熟悉masm for windows调试环境及DEBUG常用命令的使用 二、实验内容 1.DEBUG常用命令(U、R、D、E、F、T、G、Q)的操作使用 2.编程实现两个16位无符号数的加、减、乘、除运算。 有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。 三、实验设备 PC机一台、masm for windows 汇编语言集成环境 四、实验准备 1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。 2) 画出流程图。 3) 写出源程序。 4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。 五、实验步骤 1) 输入源程序。 2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。 六、学生实验报告的要求 1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。 2) 说明程序中各部分所用的算法。
3) 说明主要符号和所用到寄存器的功能。 4) 上机调试过程中遇到的问题是如何解决的。 5) 对调试源程序的结果进行分析。 4) 说明标志位CF、SF和OF的意义。 DEBUG的常用命令 1、R 显示或修改寄存器的内容命令格式:-R 2、 D 显示存储单元的内容命令格式:-D[地址1, 地址2] 3、E修改存储单元的内容 命令格式:-E[地址1, 地址2] 4、U反汇编 命令格式:-U[地址1, 地址2] 5、T单步执行 命令格式:-T 6、G连续执行 命令格式:-G[=起始地址, 结束地址] A小汇编 命令格式:-A 7、Q退出DEBUG,返回DOS 实验一源程序 EXAM1-2 .ASM DATA SEGMENT A D B 34H,18H,2 DUP(0),’$’ B DB 56H,83H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,A MOV BL,B ADD AL,BL
微机原理及应用实验报告 班级:机械1301班 :黄佳清 学号:0801130117 座位号: 中南大学机电工程学院
实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,DPTR MOVX R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;部存储器数据块赋值,搬运数据块到外部存储器,再搬运回部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光
2.在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元容 3.
微机原理与接口技术》 上机报告 学院:机电学院指导教师:胡勇学号:631424210229 姓名:鞠其林
实验一初级程序的编写与调试实验 、实验目的 1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序. 2、深入了解数据在存储器中的存取方法, 及堆栈中数据的压入与弹出 3、掌握各种寻址方法以及简单指令的执行过程. 二、实验内容 1、设堆栈指针SP=2000H,AX=3000H,BX=5000H请, 编一程序段将AX的内容和BX 的内容进行交换. 请用堆栈作为两寄存器交换内容的中间存储单元, 用DEBUG调试程序进行汇编与调试. 程序: MOV AX,3000 MOV BX,5000 MOV SP,2000 PUSH AX PUSH BX POP AX POP BX HLT
2、设AX=0002H,编一个程序段将AX的内容乘10, 要求用移位的方法完成程序: MOV AX,0002 MOV BX,AX MOV CL,2 SHL AX,CL ADD AX,BX MOV CL,1 SHL AX,CL HLT
三、心得体会 从这个程序的编辑过程中我感受到了汇编语言的强大,很直观的就可以读懂程 序的含义,但代码比较难记,而且语法严谨,我调试的过程中犯了一点错误, 修改的次数较多,希望我以后可以不再犯同样的错误,也是因为我练的比较的 少,还很生疏,我以后一定多加练习,把汇编学好 实验二 加法及判断程序的编写与调试 、实验目的 1、熟练掌握编写汇编语言源程序的基本方法和基本框架 2、学会编写顺序结构 , 分支结构和循环结构的汇编程序
3、掌握程序中数据的产生与输入输出的方法. 二、实验内容 1、用汇编语言编写一个加法程序: 1325+9839 请用ASCII 码的形式将加数与被加数存放在数据区DATA1和DATA2中, 并将相加结果显示输出. 程序: DATA SEGMENT DATA1 DB '5','2','3','1' DATA2 DB '9','3','8','9' DATA ENDS STACK SEGMENT PARA STACK 'STACK' DB 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA SI,DATA1 LEA DI,DATA2 MOV CX,4 MOV AH,0 NEXT: MOV AL,[SI] ADC AL,[DI] ADC AL,AH MOV AH,0 AAA ADD AL,30H MOV [DI],AL INC DI INC SI LOOP NEXT MOV CX,5 ADD AH,30H MOV [DI],AH NEXT1:MOV DL,[DI] MOV AH,02 INT 21H DEC DI