实验一 系统认识实验
一、实验目的
(1) 基本掌握DVCC-51开发机的操作;
(2) 熟悉MCS-51单片机指令系统中一些常用指令的功能和使用; (3) 初步了解源程序的设计和汇编生成机器语言的目的程序。 二、实验设备
MCS-51单片机仿真器 三、实验内容
键盘输入并检查下列程序: 地 址 目的程序 源程序
0100H 78AA MOV R0, #0AAH 0102H 79BB MOV R1, #0BBH 0104H 7ACC MOV R2, #0CCH 0106H 7BDD MOV R3, #0DDH 0108H 740F MOV A, #0FH 010AH 58 ANL A, R0 010BH 04 INC A 010CH 010C LOOP: AJMP LOOP 四、实验步骤 (1)输入程序
键入 LED显示 MON (进入监控程序) P.(闪动) 0100H (输入起始地址) 0100 MEM (存贮器单元检查命令) 0100 XX 78 (输入数据) 0100 78 NEXT (检查下一单元) 0101 XX AA (输入数据) 0101 AA NEXT (检查下一单元) 0102 XX
用上述方法把所有程序输入完毕,再检查一遍有无错误。检查方法有两种: ①按MON键, 使机器返回待命状态0, 输入起始地址0100, 再按MEM键, 显示器显示出0100H单元的内容。
然后,使用NEXT键,一个单元一个单元地往下检查、修改,其过程与输入程序的过程基本相同。
②使用LAST键从010DH单元开始,向上检查到0100H单元。 检查过程中,若某一单元中内容与要求输入内容不相符,则可重新输入两位正确的数字。在用LAST键时,不必按MON键,使机器返回到待命状态0,而可以在程序输入完后直接进行。
执行已输入的程序:在监控状态键入起始地址,然后按下连续执行键EXEC。该程序执行的结果是在寄存器R0~R3中写入AA、BB、CC、DD,在累加器A中写入0BH,检查R0~R3及累加器中的内容是否正确,操作如下:
键入 LED显示 MON (进入监控状态) P.(闪动) 00 (检查寄存器R0) 00 REG (寄存器检查命令) 00 AA
1
NEXT (检查下一寄存器) 01 BB (2)单步执行:
键盘输入并检查下列程序: 地 址 目的程序 源程序
0200H 7820 MOV R0, #20H 0202H 7921 MOV R1, #21H 0204H 904000 MOV DPTR, #4000H 0207H 7611 MOV @R0, #11H 0209H 7722 MOV @R1, #22H 020BH E6 MOV A, @R0 020CH 26 ADD A, @R0 020DH 97 SUBB A, @R1 020EH F0 MOVX @DPTR, A 020FH 010F LOOP: AJMP LOOP 程序输入后,用STEP键单步执行,并检查每一条指令的执行结果。操作步骤如下: 键入 LED显示 MON P.(闪动) 0200 (程序起始地址) 0200 STEP (执行第一条指令) 0202 XX MON P. 00 00
REG (检查R0中的内容) 00 20 NEXT (检查R1中的内容) 01 XX STEP (执行第二条指令) 0204 XX MON P. 00 00
REG (检查R0中的内容) 00 20 NEXT (检查R1中的内容) 01 21
该程序执行的结果是:将20H进入R0,21H进入R1,4000H进入DPTR, 11H进入内部RAM的20H单元,22H存入21H单元中,00存入ACC和外部RAM的4000H单元中。程序单步执行完后,再检查相应寄存器和存贮器单元中的内容,看是否与上述结果相同。
(3)偏移量的计算及断点设置 设有如下程序:
地 址 目的程序 源程序
0300H 780A MOV R0, #0AH 0302H 7F05 MOV R7, #05H 0304H 18 LOOP: DEC R0 0305H DF___ DJNZ R7, LOOP 0307H 0107 WAIT: AJMP WAIT 计算偏移量
输入程序:当输入到0306单元时,输入所要转移地址0304H的低位字节04H,然后按下OFST键,该单元中的内容立即变成所要求的偏移量。上述偏移量为-3,用补码表示为FDH。偏移量输入后,按下NEXT键,继续输入下面程序。
设置断点
2
键入 LED显示 RESET (系统复位) P.(闪动) 0304 (系统执行断点) 0304 F1
MON P 0300 (键入首址)
FVBP (全速断点运行) 0304 18 (4) 插入和删除 设有如下程序:
地 址 目的程序 源程序
0400H 7400 MOV A, #00H 0402H 903000 MOV DPTR, #3000H 0405H 7F0A MOV R7, #0AH 0407H F0 LOOP: MOVX @DPTR, A 0408H DF___ DJNZ R7, LOOP 040AH 010A WAIT: AJMP WAIT
将上述程序输入到机器中,并计算偏移量
① 插入命令:设在指令MOVX @DPTR,A和DJNZ R7,LOOP之间插入2条指令:04 INC A和A3 INC DPTR,操作步骤如下:
键入 LED显示 MON P.(闪动) 0408 0408 MEM 0408 DF INS (第1次插入命令) 0408 00 INS (第2次插入命令) 0408 00
这时,可向0408H和0409H单元输入新增加的2条命令,在增加的指令输入后,需要对偏移量重新计算,且将040DH单元中的内容改为0CH。
② 删除命令:删除新增加在2008H单元中的指令,步骤如下: 键入 LED显示 MON P.(闪动) 0408 0408 MEM 0408 04 DEL (第1次删除命令) 0408 A3 INS (第2次插入命令) 0408 DF
删除后,需要对偏移量重新计算,且将040BH单元中的内容改为0A 五、思考题
(1)程序在仿真器中的执行步骤; (2)指令与伪指令的主要区别。 六、实验报告要求
(1)整理好记录的数据和结果,写出完整的实验报告 实验报告一般包括:
① 实验目的 ② 实验要求 ③ 使用设备 ④ 实验步骤 ⑤ 实验结果 ⑥ 体会 (2) 小结调试程序的方法
3