资源描述
第4章 AT89S51汇编语言程序的设计与调试
参考答案
1.答:伪指令是程序员发给汇编程序的命令,只有在汇编前的源程序中才有伪指令,即在汇编过程中的用来控制汇编过程的命令。所谓“伪”是体现在汇编后,伪指令没有相应的机器代码产生。常用伪指令及其功能如下:
ORG(ORiGin)汇编起始地址命令;END(END of assembly)汇编终止命令;EQU(EQUate)标号赋值命令;DB(Define Byte)定义数据字节命令;DW(Define Word)定义数据字命令;DS(Define Storage)定义存储区命令;BIT 位定义命令
2. 答:
手工汇编:通过查指令的机器代码表(表3-2),逐个把助记符指令“翻译”成机器代码,再进行调试和运行。这种人工查表“翻译”指令的方法称为“手工汇编”。
机器汇编:借助于微型计算机上的软件(汇编程序)来代替手工汇编。通过在微机上运行汇编程序,把汇编语言源程序翻译成机器代码。
反汇编:将二进制的机器码程序翻译成汇编语言源程序的过程称为“反汇编”。
3.答:从1000H开始的各有关存储单元的内容(16进制)如下:
4D 41 49 4E 12 34 30 00
00 70
4.在编写子程序时应注意以下问题:
(1)子程序的第一条指令前必须有标号。
(2)主程序调用子程序,有如下两条子程序调用指令:
① 绝对调用指令ACALL addr11。被调用的子程序的首地址与绝对调用指令的下一条指令的高5位地址相同,即只能在同一个2KB区内。
② 长调用指令LCALL addr16。addr16为直接调用的目的地址,被调用的子程序可放置在64KB程序存储器区的任意位置。
(3)子程序结构中必须用到堆栈,用来保护断点和现场保护。
(4)子程序返回时,必须以RET指令结束。
(5)子程序可以嵌套,但要注意堆栈的冲突。
5.答:参考程序如下:
MOV A,45H
ANL A,#0FH
ORL A,#0FH
MOV 45H,A
6.答:A=80H ,SP=40H,(41H)=50H,(42H)=80H ,PC=8050H
7.答:参考程序如下:
START: MOV R0,#30H
MOV R2,#20H
LOOP: MOV A,@R0
CJNE A,#0AAH,NEXT
MOV 51H,#01H
LJMP EXIT
NEXT: INC R0
DJNZ R2,LOOP
MOV 51H,#00H
EXIT: RET
8.答:参考程序如下:
START: MOV 41H,#0
MOV R0,#20H
MOV R2,#20H
LOOP: MOV A,@R0
JNZ NEXT
INC 41H
NEXT: INC R0
DJNZ R2,LOOP
RET
9.答:参考程序如下:
ORG 0100H
MOV R2, #20H 要比较的数据字节数
MOV A , #21H
MOV R1 , A
DEC R2
MOV A , @R1
LOOP: MOV R3,A
DEC R1
CLR C
SUBB A,@R1
JNC LOOP1
MOV A,@R1
SJMP LOOP2
LOOP1: MOV A,R3
LOOP2: DJNZ R2, LOOP
MOV @R0,A
RET
10.答:
(1)SP=SP+1=61H (61H)=PC的低字节=03H
SP=SP+1=62H (62H)=PC的高字节=20H
(2)PC=3456H
(3)不可以
(4)2KB=2048 Byte
11.答:可对程序做如下修改:
ORG 0100H
DEL: MOV R7, #200
DEL1: MOV R6, #123 ;将原来的立即数125改为123
DEL2: DJNZ R6, DEL2
NOP ;增加的指令
DJNZ R7, DEL1
RET
程序修改后的延时时间为:1+(1+123*2+1+2)*200+2=50003us=50.003ms
·3·
展开阅读全文