微机实验报告

《微机实验》报告 实验名称:keilc的使用与汇编语言上机操作

一、任务要求

实验目的:熟悉keilc环境,通过在keilc环境下调试字节拆分、合并程序、数据块清

零程

序、加法程序,掌握汇编语言程序的调试方法,加深对bcd码、ascii码、堆栈、寄存

器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。 实验内容:

1.掌握keilc环境的使用

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

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

2. 编写两个十六位数的加法程序。 有两个十六位无符号数,分别存放在从20h和30h开始的数据区中,低八位先存,高八

位在后,和存于r3(高八位)和r4(低八位),进位位存于r2。

二、设计思路

实验1中的两个实验,已经给出了程序代码,,无需再进行设计。下面阐述实验2的设计

思路:

对于该程序,在处理低位相加时,直接采用指令add,然后存数,在处理高位时,考虑

到可能存在进位,所以在相加时,应使用指令addc将被加数、加数以及低位到高位的进位相

加然后存数。

此外,在处理该问题时,还应考虑到两个十六位相加可能会出现第十七位,所以要另外

安排一个地址单元用来存放最高位的数。

三、资源分配

两个十六位无符号数,分别存放在从20h和30h开始的数据区中; 和存于r3(高4八位)和r4(低八位); 进位位存于r2。

四、流程图

四、源代码 (含文件头说明、资源使用说明、语句行注释) file name: test2.asm

description: 两个十六位数的加法程序 date: 2012/09/26 designed by: zhangbo

source used: 20h: 加数a的低位 21h: 加数a的高位

30h: 加数b的低位

31h: 加数b的高位

r4: 和的低位

r3: 和的高位

r2: 和的进位 org 0000h ljmp main org 0000h main: clr c ;将进位位清零 mov 20h,#10h

六、程序测试方法与结果、软件性能分析

手动输入两个加数的值,可得到正确的和,多改变几次,皆正确。对于不同的加数,分

别在调试过程中跟踪a,r4,r3,r2的值,皆可得到预期数值。 所以,可以说,该程序的源代码是合理正确的,该程序合格,本实验取得成功。 软件性能良好。 思考题:

1.怎样查看工作寄存器、sfr、片内ram、片外ram及程序代码空间内容?disassembly 窗

口有何作用?

选择debug下的start /stop debug session,在界面的左侧会出现程序代码的空间内

容。 mov 21h,#2ah mov 30h,#21h mov 31h,#00h

mov r0,20h ;将a中的地位存入r0中 mov a,30h addc a,r0 mov r4,a clr

a ;将b中的地位存入a累加器中 ;将低位相加 ;其和存入r4中 ;对累加器a清零

mov r0,21h ;将a中的高位存入r0中 mov a,31h ;将b中的高位存入a累加器中

addc a,r0 ;将高位以及进位位相加 mov r3,a ;其和存入r4中 clr

a ;对累加器a清零 addc a,#0 ;将进位存入a.7 mov r2,a ;将进位存

入r2.7 sjmp $ end disassembly窗口内显示的是编译之后转化成的汇编代码

2.字节拆分、合并还有哪些方法,举一例说明。 org 0000h

ljmp main

org 0100h

main: mov sp, #40h ;赋堆栈指针 mov 30h, #49h ;30h单元赋值 mov r0, #32h ;r0指针赋值 mov @r0, 30h ;将30h中的内容copy到32h中 mov a, f0h ;累加器a赋值 anl a, 30h ;得到原数码的高四位 swap a

3. 若按递减1规律填充数据块,应如何修改程序? 在原程序中修改,从main开始, 第三行 改为 mov r0,#ffh 第四行 改为 mov dptr,#70ffh 第六行 改为 dec a 第七行 改为 dec dptr 第八行 改为 dec r0

第九行 改为 cjne r0,#ffh,fill1

4. 若从7020h单元开始,连续填充10个字节,应该如何修改程序? 不妨将10-19送入7020h-7029单元中,改变后的程序代码如下: org 0000h

ljmp main

org main: mov sp,#40h

0100h fill: mov a, #10 ;将10h送入累加器a中 mov r0, #10h ;设循环计数器

mov dptr, #7020h ;设数据指针 fill1: movx @dptr, a inc a

inc ;传送到片外ram ;a内容加1 ;修改数

据指针

;判断是否结束 dptr djne r0, fill1 here: sjmp here ;原地踏步 end

5. 若完成双字节bcd码加法,应如何修改程序? 不妨设加数分别存于30h-31h、40h-41h中,低位在前高位在后,各单元均为压缩的bcd

码。将和存入50h-51h中。其程序片段如下: ...

mov a,30h

add a,40h

da a

mov 50h,a ;低2位bcd码之和存入50h mov a,31h

add a,41h

da a

mov 51h,a ;高2位bcd码之和存入51h篇二:微机实验报告 微机原理与接口技术

实验报告 姓名:张楠乔

学号: 10213030

班级:自动化1004 指导教师:周永华 实验一交通灯控制实验

一、实验目的

通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。

二、实验内容

实验内容,如图1连接电路,l7、l6、l5作为南北路口的交通灯与pc7、pc6、pc5相连,

l2、l1、l0作为东西路口的交通灯与pc2、pc1、pc0相连,编程使六个灯按交通灯变化规律

亮灭。 红 黄 绿 红 黄 绿

l7 l6 l5 l2 l1 l0 图1 连接图

要求:

十字路口交通灯的变化规律要求:

(1)南北路口的绿灯、东西路口的红灯同时亮30秒左右。

(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。

(3)南北路口的红灯、东西路口的绿灯同时亮30秒左右。

(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。

(5)转(1)重复。

三、实验流程图 图2 流程图

四、试验程序:

data segment

pc equ 0c40ah

pd equ 0c40bh

data ends

stack1 segment stack dw 100hdup(?)

stack1 ends

code segment

assume cs:code,ds:data,ss:stack1 start: mov dx,data mov ds,dx ;初始化 mov al,80h

mov dx,pd s: mov al,24h

mov dx,pc

out dx,al

call delay3 ;南北绿灯亮、东西红灯亮3秒 mov cx,6

y1: mov al,44h

out dx,al

call delay1

mov al,04h

out dx,al

call delay1

loop y1 ;南北绿灯灭,南北黄灯闪,东西红灯亮 mov al,81h

out dx,al

call delay3 ;东西红灯灭,南北红灯、东西绿灯亮3秒 mov cx,6

y2: mov al,82h

out dx,al

call delay1

mov al,80h

out dx,al

call delay1

loop y2 ;东西绿灯灭,东西黄灯闪,南北红灯亮 mov dl,0ffh

mov ah,6

int 21h

jz s

mov ah,4ch

int 21h ;查询是否有键按下 delay3 proc ;延时3秒子程序 push cx

push ax

mov cx,0afffh

t1: mov ax,0ffffh t2: dec ax

jnz t2

loop t1

pop ax

pop cx

ret

delay3 endp

delay1 proc ;延时半秒子程序 push cx mov cx,1d55h

t3: mov ax,0ffffh t4: dec ax

jnz t4

loop t3

pop ax

pop cx

ret

delay1 endp

code ends

end start

五、实验步骤

(1)将pc总线接口卡插在任意扩展槽中(已接好)。

(2)用50芯线扁平电缆线连接接口卡和实验台。

(3)如图1所示连接线路。

(4)打开实验箱电源,启动tcp-2003实验系统软件环境。

(5)测试8255、led和串口是否完好。

六、实验现象:

南北路口的绿灯、东西路口的红灯同时亮3秒左右,然后南北路口的黄灯闪烁若干次,

东西路口的红灯继续亮,接着南北路口的红灯、东西路口的绿灯同时亮3秒左右,然后南北

路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。如此循环。结果与实验要求相符。

七、实验心得

本实验的重要一部分就是延时子程序,编写程序时候要根据流程图,这样就从一定程度

上简化了实验,还有就是实验的调试过程,一定要细心又有耐心篇三:微机原理实验报告 微型计算机原理实验报告 班级: 姓名:

学号: 2012年1月14日 实验一、数据传送、算术运算、循环程序结构

【实验目的】

1.熟悉8086汇编语言源程序的框架结构,并掌握汇编语言程序的编写、汇编、连接、

执行的过程,并利用turbo debugger调试汇编程序。

2.熟悉8086指令系统的数据传送指令,掌握寻址方式。

3.熟悉8086指令系统的算术运算指令。掌握循环结构汇编语言程序的编制。

【实验内容】

教材p121,第14、15题。 教材p195,第6、12题。 实验1.1:p121,第14题 设有两个8个字节长的bcd码数据bcd1及bcd2。bcd1数以1000h为首地址在内存中顺

序存放;bcd2数以2000h为首地址在内存中顺序存放。要求相加后结果顺序存放在以2000h

为首地址的内存区中(设结果bcd数仍不超过8个字节长)。

【实验原理】

考虑两个8个字节长的bcd码相加,首先根据地址要求将数据放在对应的地址单元中,

然后做加法,bcd码相加要用到调整指令,结果才为正确的bcd数

【程序框图】

【程序源代码】

datas segment

org 1000h

1000h bcd1 db org 2000h

bcd2 db 11h,12h,13h,14h,15h,16h,17h,18h;起始地址为2000h datas ends codes segment

assume cs:codes,ds:datas start: mov ax,datas mov ds,ax mov bx,0 mov cx,8 ;设置循环次数8次 clc ;清进位cf标志 again:mov

al,[bx+1000h]

adc [bx+2000h],al;结果放在2000h开始的单元内 daa inc bx loop again;没完成则转again循环 mov ah,4ch int 21h codes ends end start 运行:bcd1 db 01h,02h,03h,04h,05h,06h,07h,88h bcd2 db

11h,12h,13h,14h,15h,16h,17h,18h 结果如下:ds:2000h为首地址的连续八个字节单元中 实验1.2:p121,第15题 设从2000h为首地址的内存中,存放着10个带符号的字节数据,试编写“找出其中最大

的数,并存入2000h单元中“的程序。

【实验原理】

首先把十个带符号数放在要求的的存储单元中,然后再进行比较,有符号数的比较用 jl,jc,jng,等指令,首先设计一个最小带符号数80h作为比较初值,用2000h单元中的

数分别与其它进行比较,若大于则把该单元的数存入2000h单元,否则不予处理。 对于该题,我采用的是字符串指令,由于是隐含寻址,把2000h中的数作为字符串源操

作数,其它进行一次循环则依次放入al中,注意的是当cx为10时,dl=80h。

【程序框图】

【程序源代码】

data segment

org 2000h;数据存放在2000h开始的单元 bcd db 10h,28h,49h,78h,0a4h,0b3h,93h,29h,45h,02h data ends code

segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov

si,2000h;地址指针指向单元首地址 mov cx,10 mov dl,80h;设置最小符号数 l1: lodsb cmp al,dl;比较带符号数 jng l2 ;

(dl)大则跳转l2

mov dl,al;dl指向内容小则交换 l2: loop l1 mov ds:[2000h],dl;最大数存放在2000h单元 mov ah,4ch int 21h

code ends end start

运行:bcd db 10h,28h,49h,78h,0a4h,0b3h,93h,29h,45h,02h 结果为78h 实验1.2: p195,第6题

试编制一程序,用乘法指令实现32位二进制数与16位二进制数相乘。

【实验原理】

首先把被乘数第八位和高八位分别与乘数相乘,高八位乘得结果左移16位与第八位乘得

结果相加即为结果。

【程序框图】 篇四:微机实验报告二 微机原理实验报告 实验二 班 级: 2012级信息工程(7)班 姓 名: 学 号: 序 号: 评阅分数: 微机实验二

一、实验目的

1、熟悉80x86基本指令集。 2、掌握汇编语言源程序的编写。

3、掌握结构化程序设计三大结构的程序设计。 4、掌握汇编程序的动态调试。 二、开

发环境 未来汇编、debug 三、实验题目

1、编程将以‘$’结束的字符串中的小写字母改为大写字母。 ①已知数据段的定义: data

segment org 2000h

str1 db ‘aedc123!*sdedio71$’ count equ $-str1 org 3000h str2 db count dup(?) data ends ②画流程图 代码: data segment org 2000h str1 db aedc123!*sdedio71$ count equ $-str1 org 3000h str2 db count dup(?) data ends stack segment para stack stack db 100 dup (?) stack

ends

code segment

assume cs:code,ds:data start proc far push ds mov ax,0 push ax mov ax,data mov ds,ax lea si,str1 ;取str1首地址 lea di,str2 ;取str2

首地址 mov cx,count aa: mov al,[si]

cmp al,61h ;判断是否为小写字母 jb next cmp al,7ah ja next sub al,20h ;将小写字母转换为大写 mov [di], al ;

将非小写字母放入str2中 next: mov [di], al inc si inc di loop aa ret start endp

code ends

end start 结果:

1.2. ③debug调试:修改str1字符串的值,运行看结果。 结果: 1.2. 问题:

1.未注意到loop循环的结束条件是cx为0,故设计时应该用move cx, count这样的语

句,执行一次自减一,直到cx为0不执行循环。

2.loop 循环中出现问题,应该把inc si 和 inc di放在循环中比较语句后 3.比较

后直接写的next语句,忘记还要执行一个 mov [di], al,从而导致输出一直为0.

2、有一个字节型数组,求最大值、最小值和平均值:1)作为无符号数,2)作为带符号。 ①已知数据段的定义: data segment org 2000h num db 12h,95h,0f1h,0c2h,82h,2h,10h,34h count db $-num org 3000h

res1 db 3 dup(?) ;store unsigned org 4000h res2 db 3 dup(?) ;store signed data ends 代码:

data segment org 2000h num db 12h,95h,0f1h,0c2h,82h,2h,10h,34h count equ $-num org

3000h

res1 db 3 dup(?) ;store unsigned org 4000h res2 db 3 dup(?) ;store signed data ends stack segment para stack stack db 100 dup (?) stack

ends

code segment

assume cs:code,ds:data篇五:微机原理及接口技术实验报告 微机原理及接口技术实验报告 班 级

姓 名

学 号 4125 2014年 6月 实验一 显示程序实

验 .............................................................................

.......................... 4

一、 实验目

的 .............................................................................

.............................. 4

二、实验内

容 .............................................................................

...................................... 4

三、实验步

骤 .............................................................................

...................................... 4

四、程序清

单 .............................................................................

...................................... 5

五、运行结

果 .............................................................................

...................................... 6 实验二 数据传送实

验 .............................................................................

.......................... 7

一、实验目

的 .............................................................................

...................................... 7

二、实验内

容 .............................................................................

...................................... 7

三、实验步

骤 .............................................................................

...................................... 7

四、程序清

单 .............................................................................

...................................... 7

五、运行结

果 .............................................................................

...................................... 8 实验三 数码转换程序实

验 .............................................................................

.................. 9

一、实验目

的 .............................................................................

...................................... 9

二、实验内

容 .............................................................................

...................................... 9

三、实验步

骤 .............................................................................

.................................... 12

四、程序清

单 .............................................................................

.................................... 12

五、运行结

果 .............................................................................

.................................... 21 实验四 运算类程序实

验 .............................................................................

.................... 23

一、实验目

的 .............................................................................

.................................... 23

二、实验内

容 .............................................................................

.................................... 23

三、实验步

骤 .............................................................................

.................................... 24

四、程序清

单 .............................................................................

.................................... 24

五、运行结

果 .............................................................................

.................................... 26 实验五 简单i/o口拓展试

验 .............................................................................

............ 27

二、 实验目

的 .............................................................................

............................ 27

二、实验设

备 .............................................................................

.................................... 27

三、实验内

容 .............................................................................

.................................... 27

四、实验原

理 .............................................................................

.................................... 27

五、实验步

骤 .............................................................................

.................................... 27

六、实验结

果 .............................................................................

.................................... 28 实验六 存储器读写实

验 .............................................................................

.................... 29

一、实验目

的 .............................................................................

.................................... 29

二、实验设

备 .............................................................................

.................................... 29

三、实验内

容 .............................................................................

.................................... 29

四、实验原

理 .............................................................................

.................................... 29

五、实验步

骤 .............................................................................

.................................... 29

六、实验结

果 .............................................................................

.................................... 31 实验七 8255并行口实

验 .............................................................................

................... 33

一、实验目

的 .............................................................................

.................................... 33

二、实验设

备 .............................................................................

.................................... 33

三、实验内

容 .............................................................................

.................................... 33

四、实验原

理 .............................................................................

.................................... 33

五、实验步

骤 .............................................................................

.................................... 33

六、实验结

果 .............................................................................

.................................... 34 实验八 8253定时器/计数器接口实

验 ...........................................................................

35

一、实验目

的 .............................................................................

.................................... 35

二、实验设

备 .............................................................................

.................................... 35

三、实验内

容 .............................................................................

.................................... 35

四、实验原

理 .............................................................................

.................................... 35

五、实验步

骤 .............................................................................

.................................... 35

六、实验结

果 .............................................................................

.................................... 37 实验九 8259中断控制器实

验 .............................................................................

........... 38

一、实验目

的 .............................................................................

.................................... 38

二、实验设

备 .............................................................................

.................................... 38

三、实验内

容 .............................................................................

.................................... 38

四、实验原

理 .............................................................................

.................................... 38

五、实验步

骤 .............................................................................

.................................... 39

六、实验结

果 .............................................................................

.................................... 43 实验十 流水灯实

验 .............................................................................

............................ 44

一、实验目

的 .............................................................................

.................................... 44

二、实验设

备 .............................................................................

.................................... 44

三、实验内

容 .............................................................................

.................................... 44

四、实验原

理 .............................................................................

.................................... 44

五、实验步

骤 .............................................................................

.................................... 44

六、实验结

果 .............................................................................

.................................... 46 实验一 显示程序实验

一、 实验目的

1. 掌握在pc机上以十六进制形式显示数据的方法;

2. 掌握部分dos功能调用使用方法;

3. 熟悉汇编语言调试环境和turbo debugger的使用。

二、实验内容

一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显

示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过dos

功能调用完成一些提示信息的显示。实验中可使用dos功能调用(int 21h)。

(1) 显示单个字符输出 入口:ah=02h

调用参数:dl=输出字符

(2) 显示字符串

入口:ah=09h

调用参数:ds:dx=串地址,’$’为结束字符

(3) 键盘输入并回显

入口:ah=01h

返回参数:al=输出字符

(4) 返回dos系统

入口:ah=4ch

调用参数:al=返回码

三、实验步骤

1. 运行轻松汇编软件,选择edit菜单,根据实验内容的描述编写实验程序,本实验显

示部分参考实验流程如图1-1示;

3. 使用run菜单中的run,运行程序,观察运行结果;

4. 使用run菜单中的debug,调试程序,观察调试过程中,数据传输指令执行后,各寄

存器及数据区的内容;

5. 更改数据区中的数据,考察程序的正确性。


相关文章

  • 北航微机原理实验报告5
  • 微机原理实验报告(5) 一.实验名称 模/数转换 二.实验目的 了解模/数转换的原理,掌握ADC0809的使用方法. 三.实验内容 将温度传感器输出端连至ADC0809IN0端: 编写程序对IN0通道的模拟量进行模/数转换: 将模/数转换得 ...

  • 戚家庄小学实验教学普及县学校自查报告
  • 戚家庄小学实验教学普及县学校自查报告 根据《山东省实验教学普及县基本条件》我校对实验教学进行了全面自查,认为我校达到山东省小学实验教学评估标准,现将自查情况报告如下: 一、 基本情况: (一) 学校基本情况 戚家庄小学为村办学校,是一座隶属 ...

  • 图书馆.实验室.微机室火灾事故应急处置预案
  • 图书馆.实验室.微机室的易燃.易爆物品和电器设备较多,是火灾多发地,为了有效地防止火灾发生和一旦发生火灾要把损失降至最低,特制定本方案. 一.火灾的预防 1.图书馆.阅览室.实验室.微机室内禁止吸烟. 2.严禁将易燃易爆物品带进图书馆.阅览 ...

  • 北邮微机系统与接口技术小学期报告
  • 北京邮电大学课程设计报告 目录 1. 实验目的................................................................................................. ...

  • 学校安全制度大全
  • 为进一步加强学校安全工作管理,明确安全责任,落实各项安全措施,有效地防范重、特大安全事故的发生,保障学校及其学生和教职工的人身、财产安全,维护学校正常的教育教学秩序,根据《中华人民共和国教育法等法律法规,制定各类安全工作要点。 一、学校行政 ...

  • 学校安全管理制度汇编
  •   目录   一、学校行政方面安全管理制度   (一)学校安全工作管理制度   (二)学校消防安全管理制度   (三)学校周边环境安全治理制度   (四)集会、会操安全管理制度   (五)组织学生外出活动安全管理制度   (六)门卫安全防范 ...

  • 微机原理-循环设计实验报告
  • 一.实验目的 1.掌握循环程序的设计方法. 2.掌握比较指令.转移指令和循环指令的使用方法. 3.进一步掌握调试工具的使用方法. 二.实验预习要求 1.复习比较指令.条件转移指令和循环指令. 2.复习循环程序的结构.循环控制方法等知识. 3 ...

  • 小学安全管理制度内容
  • 黄山路第四小学安全管理制度 为进一步加强学校安全工作管理,明确安全责任,落实各项安全措施,有效地防 范重、特大安全事故的发生,保障学校及其学生和教职工的人身、财产安全,维 护学校正常的教育教学秩序,根据《中华人民共和国教育法》、《青岛市学校 ...

  • 学校行政方面安全管理制度
  • 目 录 一.学校行政方面安全管理制度 (一).学校安全工作管理制度-----------3 (二).学校安全首问责任制度-----------4 (三).突发事件及时报告制度-----------5 (四).学校消防安全管理制度------ ...

© 2024 范文参考网 | 联系我们 webmaster# 12000.net.cn