微机实验报告一

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验名称Keil的使用与汇编语言上机操作成绩______________ 一、任务要求

1•掌握Keil环境的使用

1)字节拆分、合并:调试e421.asm程序,观察相关寄存器和单元的内容。

2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。

2.编写多个十六位数的加法程序

有4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高

八位在后。要求:和存于R3 (高八位)和R2 (低八位),进位位存于R4。

二、设计思路

实验一已给出程序代码,不需要设计,下面阐明实验二,编写多个十六位数的加法

序的设计思路。

十六位数相加,先是低八位相加,低八位相加不用考虑进位,所以,此时用ADD

令,但因为在每次循环时都有CLR C操作,所以也可以用ADDC指令。而且题目中要求将和的低八位存于R2,所以将每次低八位相加的和存于R2,然后从R2中取值求和。

低八位相加后高八位相加,因为必须处理低位相加的进位问题,所以必须用ADDC 指令。而且因为要求高位和存于R3,所以将每次计算的和存于R3,每次从R3中取数跟新

的高八位相加

另外考虑到高位进位的问题,所以必须安排一个地址单元或者寄存器存放最高位

正是因为每次循环中,进位都会被处理,所以每次循环开始要CLR C。

三、资源分配

4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高八位在后。

和存于R3 (高八位)和R2 (低八位),进位位存于R4。

R0和R1作为数据指针,存放低八位和高八位的地址。

循环次数存于R5。

四、流程图

Cyj ■ ■*

YES

R4—A 进位存于KH

五、源代码

(含文件头说明、语句行注

四个十六位数的加法程序

File n ame: 3.asm

Descriptio n: 四个十六位数的加法程序

Date: 2016/09/23 Desig ned by: 陈钰

軌元初始賦值

RO —20H

指針賦初值

NO

R2*-(20H)

(2111) R4—QOH 寄存器

赋值

R2,R3,R4,R5 寄存器

20H-27H

ORG 0000H

LJMP MAIN

ORG 0100H MAIN: MOV R0,#20H

MOV R1,#21H

MOV R2,20H

MOV R3,21H

MOV R4,#00H

MOV R5,#03H LOOP: CLR C

MOV A,R2

INC RO

INC R0

ADD A,@R0

MOV R2,A

MOV A,R3 ;设数据指针

;R2 —(20H),R3 —

Source used: R0,R1数据指针

;进位清零

;A —R2

;R0—R0+1+1 , R0指向下一个低八位

;A—A+(R0),低八位相加

;R2—A,低八位的和存于R2

;A —R3

(21H)

;最高位进位清零;设置循环次数

INC R1

INC R1 ;R1 — R1+1+1 , R1指向下一个高八位

ADDC A,@R1 ;A — A+(R1)+C ,高八位加进位的和 MOV R3,A

;R3—A ,高八位的和存于 R3

CLR A ;A 寄存器清零

ADDC A,R4 ;A —A+R4+C ,计算进位 MOV R4,A

;R4—A ,进位信息存入 R4

DJNZ R5,L00P ;判断R5是否等于零判断循环是否结束

六、程序测试方法与结果

字节拆分、合并程序:(存于30H 的数被拆分,分别转为ASCII 码存于31H 和32H , 最

后再合并存于33H )

Address: d:3Qh

D :0x30:0 :

的 3弓

D :0x32:2 :

39

D:0x34:4 : 00 00

数据块填充程序(将片外RAM 7000H-70FFH 单元按一定规律填充)

HERE: SJMP HERE END

Address: |x:7{XH3h

X 0x007000 00 01 02 03 04 05 06 07 OS 09 OA OB oc OD OE X 02£Q0700F OF 10 11 12 13

14 IS ie 17

19 19 1A IB 1C

ID X OX0O7QLE IE IF 20 21 22

23 2^ 25 26 27 25 29 2A 23 2C X 0X00702D 2D 2E 2F 30 31 32 33 3^ 35 3石 37 38 39 3A 33 X 0X00703C

3C 3D 3E 3F 40 41 42 43 44 45 46 47 43 49 4A X

4B 4C 4D

4F SO 51 52

S3 54

5S S6 57 se S9 X 0x00705Zi 5A 53 5C 5D 5E 5F €0 61 62 €3 6^ 65 66 67 石三 X 0x007069 69

GA €B 6C 6D 6E 6F P 71 72 73 7勺 75 76 77 X 0X00707B 7a

79 7A 73 7C 7D 7E 7F SO SI S2 S3 84 85 S6 X 0x007087 8? n u Q w

89 SA EB ec 三二 3E SF 9 0 91 92 93 94 三三 X 0x00^7096 日石 97 3S 99 9A 9B 9C 9D 9E 9F AO Al A2 A3 A4 X 0X0070AS A5 A.7 AS A9 AA A3 AC AD AE AF BO Bl B2 B3 X 0X0070B4

B4 B5 B6 B7

BS

B9

BA

33 BC

BD

BE BF CO d C2 X Q K 007QC3

C3

匚弓 C5

C6

C7

G3 C9 GA CB CC CD CE CF DO D 二 X 0X0070D2 D2 D3 D4 D5 D6 b DS D9 DA DB DC DD DE DF EO X OX0O7OE1 El E2 E3 E4 E5 E6 E7 E3 E9 EA E3 EC ED EE EF X 0x0070F0 F0 Fl F2 F3 F4 F5 F6 F7 EB F9 FA

FB

FC

FD

FE X

0X0070FF FF

00 00 DO

DO 00 00 00

00

00

00 00 00 00

3 3

四个十六位数的加法程序

输入的数:

Memory 1 D : 0x20;0; CC DD D;0x22:2: EE FF D:0x24:4: FE EE D ;0x26;6; 33 11

结果:

r4 0x02

思考题

SFR 片内RAM 、片外RAM 及程序代码空间内容 ? Disassembly

窗口有何作用?

1)

观察工作寄存器,SFR 点击 View Registers Window ,弹开 Registers "窗口。

在此窗口查看。

2) 观察10端口,Timer ,中断控制寄存器:点击菜单 Peripherals ,弹出外设选项

1 .怎样查看工作寄存器 Address:

相关文档
最新文档