搜索
您的当前位置:首页正文

《单片机原理与应用-基于Proteus单片机系统设计与应用》课后习题答案

来源:二三娱乐
《

单片机原理及应用 - 基于 Proteus 单片机系统设计及应用

习题解答

本答案由 Elvis 提供,请到 413宿舍表达感谢

第2章 80C51 单片机的指令系统

1.简述下 列基本 概念。

答 指令: CPU根据人 的 意图来执 行某种 操作的 命令。

指令 系统: 一台计 算机所能 执行的 全部指 令集合。

机器 语言: 用二进 制编码表 示,计 算机能 直接识别 和执行 的语言 。 汇编 语言: 用助记 符、符号 和数字 来表示 指令的程 序语言 。

高级 语言:独立于 机器的,在 编程时 不需 要对机器 结构及 其指令 系统有深 入

了解的通 用性语 言。

2.什么是 计算机 的指令 和指令系 统 ? 答 见1题。

3.简述80C51 汇编 指 令格 式。 答

操作 码[ 目的 操纵 数 ][ ,源 操作数 ]

4.简述80C51 的寻 址 方式 和所 能涉 及的寻 址空间 。 答 立 即数寻 址:程 序 存储器 ROM。

直接 寻址: 片内 RAM低128B 和 特殊功 能寄存 器。 寄存 器寻址 : R0~R7,A,B, C, DPTR。

寄存 器间接 寻址: 片内 RAM低128B ,片外 RAM。 变址 寻址: 程序存 储器 64KB。 相对 寻址: 程序存 储器 256B 范围。

位寻 址:片 内 RAM的20H~2FH字节地 址,部 分特殊功 能寄存 器。 5.要访问 特殊功 能寄存 器和片外 数据存 储器, 应 采用哪 些寻址 方 式 ? 答 SFR :直接 寻址, 位 寻址;片 外RAM:寄存 器间接寻 址。

6. 在80C51 片内RAM中, 已 知(30H)=38H , (38H)=40H , (40H)=48H ,(48H)=90H 请分析下面 各是什 么指令 ,说明源 操作数 的寻址方 式及按 顺序执 行后的 结 果。

MOV A ,40H 直接 寻址 MOV R0,A 寄存器 寻址 MOV P1,#0F0H 立即数 寻址 MOV @R0,30H 直接寻 址 MOV DPTR,#3848H 立即数 寻址 MOV 40H ,38H

直接 寻址 MOV R0,30H 直接寻 址 MOV

P0,R0

寄存器 寻址

。 MOV MOV MOV

18H,#30H A,@R0 P2,P1

立即数 寻址 寄存器 间接寻 址 直接寻 址

均为 数据传 送指令 ,结果 ( 参见下 图) 为

RAM

30H 38H

38H 40H

40H 48H

48H 90H

, (48H)=90H

(18H)=30H ,(30H)=38H ,(38H)=40H (40H)=40H

R0=38H ,A=40H, P0=38H,P1=FOH,P2=FOH,DPTR=3848H 7.对80C51 片 内RAM高128B 的地址空 间寻址 要注 意什么? 答 用 直接寻 址,寄 存 器寻址, 位寻址 。 8.指出下 列指令 的本质 区别。 答

MOV MOV

A ,data A,#data

直接 寻址 立即数 寻址 直接寻 址 立即数 寻址

MOV data1 , data2 MOV 74H ,#78H

9.设R0的 内容为 32H,A的内容 为48H,片 内RAM的32H内容 为80H,40H的 内容为 08H。 请指出 在 执行 下列 程序段后 各单元 内容的 变化。

MOV MOV MOV MOV

解 (R0)=35H

(32H) =08H 答 答 答

A,@R0 @R0,40H 40H,A R0,#35H

;((R0))=80H

→ A

;(40H)=08H →(R0) ;(A)=80H →40H ; 35H →R0

(A) =80H (40H)=80H

10.如 何访问 SFR,可使 用哪些寻 址方式 ?

访问 SFR:直 接寻 址,位寻 址,寄 存器寻 址。 只能 采用寄 存器间 接寻址 ( 用 MOVX指令 ) 。

低128B:直 接寻址 ,位寻址 ,寄存 器间接 寻址,寄 存器寻 址(R0 ~R7) 。 高128B :直 接寻址 ,位寻址 ,寄存 器寻址 。11.如 何访问 片外RAM单元,可使 用哪些 寻址方 式 ? 12.如 何访问 片内RAM单元,可使 用哪些 寻址方 式 ?

13.如 何访问片 内外 程序 存储器, 采 用哪 些 寻址 方 式 ? 答

采用 变址寻 址 ( 用 MOVC指令 ) 。 14.说明 十进 制 调整的原 因 和 方法 。

答压缩BCD码在 进行 加法运算 时本应逢十进 一,而计算机只 将其当 作十六进 制 数处理, 此时得 到的结 果不正确 。用 DAA指令 调整( 加 06H, 60H, 66H) 。

15.说明 80C51 的 布尔处 理 机 功能 。

用来 进行位 操 作。

16.已 知 (A)=83H ,(R0)=17H ,(17H)=34H ,请指出在执行下 列 程序 段 后 A的 内 容。 解

ANL ORL XRL CPL

所以 解 (1)

(2)

A , #17H 17H, A A, @R0 A

; 83H∧ 17H=03H→ A ; 34H∨ 03H=37H→ 17H ; 03H异 或 37H=34H ; 34H求 反等于 CBH

(A)=CBH 使 ACC.0 置 1 SETB

ACC.0

SETB

EOH

清 除累加 器高 4位 CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4

17.使 用 位操 作 指令实现下 列逻辑操 作。 要 求不 得 改 变未涉 及位 的 内 容 。

(3) 清除 ACC.3 , ACC.4 , ACC.5 , ACC.6

CLR ACC.6 CLR ACC.5 CLR ACC.4 CLR ACC.3

18.编写 程序 , 将片 内 RAM R0~ R7的 内 容传送到 20H~ 27H单元。 解

MOV MOV MOV MOV

2EH, 2DH中 。

MOV MOV MOV

2FH , 20H 2EH, 21H 2DH, 22H 27H , R7 26H, R6 25H, R5 24H, R4

MOV 23H , R3 MOV 22H , R2 MOV 21H , R1 MOV 20H , R0

19.编写 程 序 , 将 片 内 RAM的 20H, 21H, 22H三 个连续单元 的 内 容 依 次 存 入 2FH,

20.编写程 序,进 行两个 16位 数 的减 法: 6F5DH一 13B4H,结果 存 入片内 RAM的 30H 和 31H单元, 30H存 差 的低 8位 。

CLR MOV

C

A, #5DH

;被 减数低 8位→ A

MOV MOV MOV MOV MOV

R2, #B4H 30H, A A, #6FH R2, #13H 31H, A

;减 数低 8位 → R2

;被 减数减 去减数 , 差→ A ;低 8位结果 → 30H ;被 减数高 8位→ A ;减 数高 8位 → R2

;被 减数减 去减数 , 差→ A ;高 8位结果 → 31H

SUBB A , R2

SUBB A , R2

21.编写 程 序 , 若 累 加 器 A的 内 容 分别 下 列 条 件时足满,则程 序转至 LABEL存 储 。设元单A中 有的 是 无符 号 数 。

解 (1) A

≥ 10

; (A) 与 10比较 ,不等转L1 ;相等转LABEL

; (A) 大 于 10,转LABEL

或 : CLR

JZ

C LABEL JNC LABEL

(2)A>10

CJNE A , #10 , L1 SJMP L3 L1: JNC L2: JMP

L2 LABEL

SJMP L4

; (A) 与 10比较 ,不等转L1 ;相等转L3

; (A) 大 于 10,转L2 ; (A) 小 于 10,转L4 ;无条件转LABEL

或 : CLR C

SUBB A , #0AH JNC LABEL SUBB A , #0AH

CJNE A , #10 , L1 L2: LJMP LABEL L1: JNC

L2

(3)A ≤ 10 CJNE

A , #10 , L1

; (A) 与 10比 较,不 等转L1 ;相 等转LABEL

; (A) 小 于 10,转LABEL

或 : CLR C

SUBB A , #0AH JC

LABEL JZ

LABEL

L2: LJMP LABEL L1: JC, L2

22.已 知 SP=25H, PC=2345H, (24H)=12H , (25H)=34H , (26H)=56H 。问此时执行 “ RET” 指令 后 , SP=?

PC=?

SP = 23H, PC=3412H

23. 已 知 SP=25H, PC=2345H ,标号 LABEL所 在 的 地 址为3456H 。问执 行长 指 用调令 “ LCALL

LABEL”后, 堆栈指针和 堆栈内 容发生 什 么变化 ?PC的 值等 于 什 么 ?

SP = 27H, (26H)=48H , (27H) = 23H, PC= 3456H

24.上题中 LCALL 能 否直 接换成 ACALL指 令,为什 么 ? 如 果使 用 ACALL指 令,则可

调用的地址 范围是 多少?

不能 。ACALL是短 转指令, 可调用 的地址 范围是 2 KB 。

25.阅 读下列 程序, 要求 : (1) 说明程序 功能;

(2) 试修改程 序,使 片内 RAM的内容 成 为如 图所 示的结果 。

MOV R2, #0AH MOV R0, #50H CLR A

LOOP:

MOV @R0,A INC R0

DJNZ R2 ,LOOP

DONE:

50H 51H 52H 53H 54H 55H 56H 57H 58H 59H

00H 01H 02H 03H 04H 05H 06H 07H 08H 09H

(1) 功能是 将片内 RAM中50H~59H单 元清零 。 (2)7A(OA) (7850) DA(FC)

(3) 在INC R0 后 添一句 INC A 。

26.设 (R0)=7EH ,(DPTR)=10FEH ,片 内RAM中7EH单 元的内 容为 0FFH,7F单元的 内容为38H,试 为下 列程 序注释其 运行结 果。

INC INC

@R0 R0

(7EH) =00H (R0) = 7FH (7FH)

=39H

(DPTR) =10FFH (DPTR) =1100H (DPTR) =1101H

INC @R0 INC DPTR INC DPTR INC DPTR

27.下 列程序 段经汇 编后 ,从 1000H 开始 的各有 关 存储单 元的内 容将是 什 么 ?

ORG 1000H

TAB1 TAB2

EQU EQU DB DW

解 (1000H)=53H

(1003H)=52H (1006H)=34H

1234H 3000H “ START”

TAB1 ,TAB2,70H (1001H)=54H (1004H)=54H (1007H)=30H

(1002H)=41H (1005H)=12H (1008H)=00H

(1009H) =70H

28.阅 读下列 程序, 并要 求: (1) 说明程序 功能;

(2) 写出涉及 的寄存 器及 片内RAM单元( 如 图所示 ) 的最后 结果。

40 H

AFH

MOV MOV INC ADD INC R0 MOV CLR INC R0 MOV

@R0,A

;进位 位存入 43H

功能 :将 40H,41H单元中的 内容相 加结果 放在 42H单元, 进位放 在43H单 元,

@R0,A A

;结果 存入 42H单元 ;清 A

;进位 位存入 A

R0,#40H A,@R0 R0 A,@R0

;40H→R0 ;98H→ A ;41H→ R0 ;98+(A)=47H → A

98H

ADDC A ,#0

(R0)=43H , (A) =1,(40H)=98H ,(41H) =AFH,(42H) =47H,(43H)=01H 。

29.同 上题要 求,程 序如 下:

61 H

CCH

MOV MOV MUL ADD MOV CLR MOV

A,61H B,#02H AB A,62H 63H,A A 64H,A

;F2H→ A ;02H→ B

;F2H×02H=E4H→ A ;积 的低 8位加上 CCH→ A ;结 果送 63H ;清 A

;积 的高 8位 加进位 位→ A ;结 果送 64H

F2H

ADDC A ,B

功能 :将 61H单元 的内容乘 2,低 8位再加 上62H单 元的内 容放人 63H,将结 果

(61H) =F2H (62H) =CCH (63H) =BOH (64H) =02H

; 待判断 的数→ A

的高 8位放在 64H单元。 (A) =02H (B) =01H 解

MOV

30.编 写程序 ,采用 “与 ”运 算, 判断8位二进 制 数是奇 数个1还是偶 数个1。

A ,#XXH

ANL A, #0FFH ;与 0FFH相 与 JB

P , REL ;是 奇数转REL ┇ ;是 偶数程 序顺序执行

REL :

┅ ┇

31.编写 程序 , 采用 “或 ” 运 算, 使 任意 8位二进制 数的 符 号位 必为1。

解 MOV A , XXH

;取数据 → A ORL A, #80H ;使该数 符号位为1 MOV

XXH, A

;保存该 数据

32.请思 考 : 采 用 “ 异 或 ” 运 算 怎 样 可 使 一带符 号 数 的 符 号 位 改 变 ,变 ?怎 样可 使 该数 必 然为零 ?

解 (1) 符号位 改变 ,数据位 不变:

MOV A , XXH ;取 数据→ A XRL A, #80H ;异或 80H→ A

(2) 使 该数为零 :

MOV A, XXH ;该数→ A MOV R0, A ; 该数→ R0 XRL

A, R0

; 该数自身相异或 数 据 位 不

因篇幅问题不能全部显示,请点此查看更多更全内容

Top