当前位置:文档之家› 北理工微机原理硬件报告_8259A

北理工微机原理硬件报告_8259A

北理工微机原理硬件报告_8259A
北理工微机原理硬件报告_8259A

微机原理与接口技术——硬件实验报告

班级:06111101

学号:1120111562

姓名:张秀峰

实验一8259中断控制器实验

一、实验目的

(1)掌握8259的工作原理。

(2)掌握编写中断服务程序的方法。

(3)掌握初始化中断向量的方法。

二、实验内容

用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。

三、实验步骤

(1)连线

1.单脉冲发生器输出P+与8259的IR0相连;

2.8259的片选CS8259与CS0相连;

3.8259的INT与8086的INT相连;

4.8259的INTA与8086的INTA相连;

5.CS273与CS1相连;

6.00与LED0相连,01与LED1相连,依次将CS273接口与LED相连;

(2)编辑程序,编译链接后,单步运行,调试程序。

(3)调试通过后,在中断服务程序的NOP处设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处,观察寄存器AX的值。

四.实验流程图

五,实验源程序如下

CODE SEGMENT PUBLIC

ASSUME CS:CODE

ORG 100H

START:

MOV DX,4A0H ;写ICW1,单片8259A,要写0CW4

MOV AX,13H

OUT DX,AX

MOV DX,4A2H ;写ICW2

MOV AX,80H ;IR0的中断向量码为80H

OUT DX,AX

MOV AX,01

OUT DX,AX ;一般嵌套,非缓冲方式,非自动EOI

MOV AX,0 ;写OCW1

OUT DX,AX;允许中断

;中断向量存放在(0000H:0200H)开始的四个单元里

MOV AX,0

MOV DS,AX

MOV SI,200H ;中断类型号为80H

MOV AX,OFFSET HINT ;中断服务程序的入口地址

MOV DS:[SI],AX

ADD SI,2

MOV AX,CS

MOV DS:[SI],AX

STI ;开中断,设置IF=1

JMP $ ;原地跳转

HINT: ;中断服务程序

XOR CX,0FFH;CX取反

MOV DX,4B0H;CS273接口的地址,与8个LED灯相连

MOV AX,CX;输出高低电平控制LED灯的亮灭

OUT DX,AX

MOV DX,4A0H ;OCW2的地址

MOV AX,20H ;一般EOI命令,全嵌套方式

OUT DX,AX

IRET ;中断返回

CODE ENDS

END START

六.实验思考题

1.将P0连线连接到IR1—IR7任意一个;重新编写程序。

将P0接到了IR1,在原程序的基础上,把写ICW2的控制字改为81H,再把中断向量的入口地址改为0204H即可。程序如下:

MOV DX,4A2H ;写ICW2

MOV AX,81H ;IR1的中断向量码为81H

OUT DX,AX

实验现象:运行程序,触发脉冲发生器产生中断请求,相应二极管点亮。

2.设置OCW1,屏蔽某个中断请求,运行程序观察现象。

将IR0重新接入LED0,设置OCW1为01H,屏蔽中断IR0,则IR0的中断无法得到响应。程序如下:

MOV AX,01H ;写中断屏蔽字OCW1

OUT DX,AX;屏蔽IR0中断

;中断向量存放在(0000H:0200H)开始的四个单元里

实验现象:

每按单脉冲发生器一次产生一次中断申请,但连接的发光二极管一直不亮,即中断被屏蔽。

3. 设置OCW2,了解中断结束方式与设置优先权。

将IR0和IR1都连接到P+上,分别连接LED0和LED1到00和01。OCW2将E0OCW2一般EOI命令,将IR0设置为最低中断优先级。程序如下:

MOV AX,01 ;写ICW4

OUT DX,AX ;一般嵌套,非缓冲方式,非自动EOI

MOV AX,0 ;写OCW1

OUT DX,AX;允许所有中断

;IR0的中断向量存放在(0000H:0200H)开始的四个单元里

MOV AX,0

MOV DS,AX

MOV SI,200H

MOV AX,OFFSET HINT1

MOV DS:[SI],AX

ADD SI,2

MOV AX,CS

MOV DS:[SI],AX

STI ;开中断,设置IF=1

;IR1的中断向量存放在(0000H:0204H)开始的四个单元里

MOV AX,0

MOV DS,AX

MOV SI,204H

MOV AX,OFFSET HINT2

MOV DS:[SI],AX

ADD SI,2

MOV AX,CS

MOV DS:[SI],AX

JMP $ ;原地跳转

HINT1:;中断服务程序1

XOR CX,0F0H ;CX高4位取反

MOV DX,4B0H;CS273的地址

MOV AX,CX ;输出高低电平控制LED灯的亮灭

OUT DX,AX

MOV DX,4A0H ;OCW2的地址

MOV AX,E0H ;一般EOI命令,IR0优先级最低

OUT DX,AX

IRET ;中断返回

HINT2: ;中断服务程序2

XOR CX,00FH ;CX低4位取反

MOV DX,4B0H;CS273的地址

MOV AX,CX;输出高低电平控制LED灯的亮灭

OUT DX,AX

MOV DX,4A0H ;OCW2的地址

MOV AX,E0H ;一般EOI命令,IR0优先级最低

OUT DX,AX

IRET ;中断返回

实验现象:CS273的00与LED0相连,01与LED1相连,02与LED2相连,依次下去,直至07与LED7相连。每按单脉冲发生器一次产生一次中断申请,由于IR0的优先级比IR1低,故先响应IR1,后响应IR0,观察到低4位的LED灯先点亮或熄灭,高4位的LED灯后点亮或熄灭。

七.实验心得

通过实验,了解了中断的产生和中断发送的概念,理解了作为一种实时控制机制,中断的优越性。在对8259的初始化过程中,认识了控制字的使用方法。中断产生后,程序发生跳转,跳转的位置由中断向量决定,程序会执行

中断服务程序,在中断向量中,低位存段基址,高位存偏移量。

实验二8255并行接口实验与8253可编程计数器

一,实验内容

8255的A口作为输入口,与逻辑电平开关相连。8255的B口作为输出口,与发光二极管相连。编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。8253计数器0,1,2工作于方波方式,观察其输出。

二,实验目的

(1)掌握8255的工作原理。

(2)掌握编写8255并行接口初始化及编程实现的方法。

⑶掌握8253定时/计数器的编程原理。

三,实验仪器

微机实验教学系统实验箱、8086CPU模块

四,实验步骤

(1)连线

?8255的PA0—PA7分别与逻辑电平开关的K1—K8相连

?PB0—PB7分别与发光二极管电路的LED1—LED8相连

?CS0与8255的片选CS8255相连

?其它线路均已连好

(2)编辑程序,编译链接后,单步运行,调试程序。

(3)调试通过后,全速运行,观察实验结果。

(4)撰写实验报告。

五,实验源程序如下

CODE SEGMENT PUBLIC

ASSUME CS:CODE

ORG 100H

START:

MOV DX,04A6H

MOV AX,90H;写8255的控制字,A组工作在方式0,A口输入,C

口高4位输出,B组工作在方式0,B口及C口的低4位均工作在输出

OUT DX,AX

START1:

MOV DX,04A0H

IN AX,DX;读取A口数据

MOV DX,04A2H

OUT DX,AX;将从A口读取的数据从B口输出,控制LED灯

JMP START1

CODE ENDS

END START

六,实验现象

LED灯低电平有效。当某一开关拨到低电平时,对应的LED灯点亮。当某一开关拨到高电平时,对应的LED灯熄灭

七,思考题

1.将片选线接到CS1—CS7;重新编写程序。

CS0对应地址是04A0---O4AF, CS1对应地址是04B0---O4BF.

现将片选线接到CS1,重新编程:

MOV DX,04B6H ;CS1对应的地址

MOV AX,90H

OUT DX,AX

实验现象:如同片选线接到CS0

2.交换A B接线,A口输出、B口输入;重新编写程序。

PB0—PB7分别与逻辑电平开关的K1—K8相连

PA0—PA7分别与发光二极管电路的LED1—LED8相连

START:

MOV DX,04B6H ;片选线接到CS1

MOV AX,82H

OUT DX,AX ;写控制字,A,B组均工作在方式0,A口输出,B口输入实验现象:

LED灯低电平有效。当某一开关拨到低电平时,对应的LED灯点亮。当某一开关拨到高电平时,对应的LED灯熄灭

3.C口4位接LED;4位接开关;重新编写程序。

PC4—PC7分别与逻辑电平开关的K1—K4相连

PC0—PC3分别与发光二极管电路的LED1—LED4相连

MOV DX,04B6H ;片选接CS1

MOV AX,88H

OUT DX,AX ;A,B组均工作在方式0,C口高4位输入,低4位输出START1:

MOV DX,04B4H

IN AL,DX;读取C口数据

MOV CL,4

ROR AL,CL ;不带CF位的循环右移4位,使C口数据的高4位与低4位互换MOV DX,04B4H

OUT DX,AL ;将C口高4位的数据从低4位输出,控制LED灯

JMP START1

实验现象:LED灯低电平有效。当某一开关拨到低电平时,对应的LED灯点亮。当某一开关拨到高电平时,对应的LED灯熄灭

八,实验心得

通过8255并行接口实验,我对8255有了更深刻地了解,对其在内存中的地址,各寄存器的使用有了较为清晰的认识。通过思考题的练习,掌握了8255的编程原理。软硬件的结合,使我们学以致用,能力有了较大提升。

8253可编程定时器

四,实验步骤

(1)连线

◆CS0与8253的片选CS8253相连;

◆CLK3(750KHz)与8253CLK0相连;

◆8253的OUT0与8253CLK2相连;

◆OUT2与发光二极管LED1相连;

其它线均已连好。

(2)编辑程序,编译链接后,跟踪运行,调试程序。

(3)调试通过后,全速运行,观察实验结果。

(4)撰写实验报告。

五,实验源程序

CODE SEGMENT PUBLIC

ASSUME CS:CODE

ORG 100H

START:

MOV DX,04A6H

MOV AX,36H

OUT DX,AX;写控制字,计数器0工作在方式3,先读写计数器低8位,再读写计数器高8位,二进制计数

MOV DX,04A0H

MOV AX,7CH

OUT DX,AX

MOV AX,92H

OUT DX,AX;将计数初值927CH写入计数器0

MOV DX,04A6H

MOV AX,0B6H

OUT DX,AX;写控制字,计数器2工作在方式3,先读写计数器低8位,再读写高8位,二进制计数

MOV DX,04A4H

MOV AX,4

OUT DX,AX

MOV AX,0

OUT DX,AX;将计数初值4H写入计数器2

JMP $ ;原地跳转,等待

CODE ENDS

END START

六,实验现象

LED1灯交替亮灭(闪烁),且亮灭时间相等

七,思考题

1.定时器2计数值改为20H;观察其现象。

MOV DX,04A4H

MOV AX,20H

OUT DX,AX;将计数初值20H写入计数器2

实验现象:LED1灯等时间间隔的交替两灭,但亮灭的周期更长,即灯闪烁得更慢

2.将定时器2改为方式2分频器方式;观察其现象。

MOV DX,04A6H;写控制字,计数器2工作在方式2,只写计数器低8位,二进制计数

MOV AX,094H

OUT DX,AX

MOV DX,04A4H

MOV AX,20H

OUT DX,AX

实验现象:LED1灯亮的时间变长,灭的时间变短

3.将GATE2 接到开关上;观察其现象。

用上面思考题2的程序,把GATE2 接到开关K1上。当打开开关(开关置1)时,实验现象同思考题2;当开关关闭时,LED1灯始终灭。

4. 将GATE2 接到PUL P0开关上,计数器2 改为方式1 ;观察其现象。GATE2接到PUL P0开关的P+端口

MOV DX,04A6H;写控制字,计数器2工作在方式1,只写计数器低8位,二进制计数

MOV AX,092H

OUT DX,AX

实验现象:按一下PUL P0开关,LED1灯亮,但几秒后就会熄灭。这

时,再按动PUL P0开关,LED1灯亮,几秒后又会灭,亮灭情况同第一次相同。每次当灯熄灭后,按动PUL P0开关,LED1灯会产生同第一次相同的亮灭情况。每次在灯未熄灭时,按动PUL P0开关,则灯亮的时间变长。

5. 将GATE2 接到PUL P0开关上,计数器2 改为方式5 ;观察其现象。GATE2接到PUL P0开关的P+端口

MOV DX,04A6H;写控制字,计数器2工作在方式5,只写计数器低8位,二进制计数

MOV AX,09AH

OUT DX,AX

MOV DX,04A4H

MOV AX,20H

OUT DX,AX

实验现象:触发PUL P0开关后一段时间LED1灯闪一下,然后就立即熄灭。

八,实验遇到的问题及实验心得

这次的实验,我收获了很多,熟悉了8253定时计数器的6种工作方式的使用及其特点,包括每种方式的控制字、启动方式、输出波形的特点等。通过动手接硬件电路,熟练了实验箱的使用,而且用LED灯观察实验现象,方便直观。

实验三8250串行接口实验与ADC0809实验

一,实验目的

(1)熟悉串行通信的一般原理和8250的工作原理。

(2)了解RS—232串行接口标准及连接方法。

(3)掌握8250芯片的编程方法。

⑷掌握转换的基本原理。

⑸掌握的使用方法。

二,实验设备

微机实验教学系统实验箱,8086CPU模块

三、实验内容

在实验箱与PC机(上位机)之间实现串行通信,主机每下传一个字符,若通讯正确,则下位机返回一个同样的字符;若不正确,则无返回值或者返回值不同。

按查询方式采样一路A/D转换数据,用简单输入口74LS244查询EOC信号。每循环一次0通道采样一次。0通道的采样结果放入AX中,AL有效。

四,实验步骤

(1)无须接线,内部已经连好。8250的端口地址为0480H起始的偶地址单

元。

(2)编写下位机程序,编译链接后,全速运行。

(3)退出“8086实验系统”,运行“串口调试助手”上位机程序。

(4)将“串口调试助手”程序输入和输出都调整为16进制格式,发送一个16

进制数,观察返回的是否是同样一个16进制数。

五,实验程序

程序流程图:

实验源程序:

CODE SEGMENT PUBLIC

ASSUME CS:CODE

ORG 100H

START:

MOV DX,486H ;写通信线路控制寄存器D7=1

MOV AX,80H

OUT DX,AX

MOV DX,480H;设置波特率低字节

MOV AX,12

OUT DX,AX

MOV DX,482H ;设置波特率高字节

MOV AX,0

OUT DX,AX

MOV DX,486H

MOV AX,3

OUT DX,AX

MOV DX,482H;中断允许寄存器

MOV AX,0

OUT DX,AX

MOV DX,48AH;清除原始错误状态

IN AX,DX

MOV DX,480H;清除原始状态

IN AX,DX

LOOP1:

CALL RECV

CALL SEND

JMP LOOP1;循环发送

SEND:; 发送子函数

PUSH AX

MOV DX,48AH

IN AX,DX

TEST AX,20H

JNZ SEND2 ;发送数据寄存器空,则跳转至SEND2,发送字符

POP AX ;发送数据寄存器不是空,不可发送

JMP SEND

SEND2:

POP AX

MOV DX,480H;指向发送接收数据寄存器,发送字符

OUT DX,AX

RET

RECV: ;接收子函数

MOV DX,48AH

IN AX,DX

TEST AX,1

JZ RECV ;未接到到一个字符,则跳转至RECV,若接收

到字符,则顺序往下执行。

MOV DX,480H;接收到字符,指向接收缓存器

IN AX,DX;读取接收缓冲区的字符

RET

CODE ENDS

END START

实验现象:在发送区键入一个16进制数,接受区是同样一个16进制数。

六,思考题

1.连接8255 将接收到的16 进制数;驱动8个彩灯;观察其现象。

将8255的片选连到CS0,将PB0~~PB7依次与LED1~LED8相连接

MOV DX,04A6H;8255的控制字,B口输出

MOV AX,90H

OUT DX,AX

MOV DX,486H;8250初始化

MOV AX,80H

OUT DX,AX

MOV DX,480H

MOV AX,12

OUT DX,AX

MOV DX,482H

MOV AX,0

OUT DX,AX

MOV DX,486H

MOV AX,3

OUT DX,AX

MOV DX,482H

MOV AX,0

OUT DX,AX

MOV DX,48AH

IN AX,DX

MOV DX,480H

IN AX,DX

LOOP1:

CALL RECV ;接收输入的数据

CALL SEND ;将数据发送给上位机

MOV DX,04A2H;将8250发送的存于AX中的数据,从8255的B 口输出,驱动8个LED灯

OUT DX,AX

JMP LOOP1;循环发送

SEND:

PUSH AX

MOV DX,48AH

IN AX,DX

TEST AX,20H

JNZ SEND2

POP AX

JMP SEND

SEND2:

POP AX

MOV DX,480H

OUT DX,AX

RET

RECV:

MOV DX,48AH

IN AX,DX

TEST AX,1

JZ RECV

MOV DX,480H

IN AX,DX

RET

实验现象:当在“串口调试助手”的发送区键入一个8位的16进制数后,PC机接收区会显示发送的数字,同时8个LED也会对应的亮(或灭)。

2.连接8255 将开关的状态以16 进制数的方式发送到PC机;观察其现象。

将8个开关连接到8255的PA0~PA7口,在pc机上观察接收区的数据CODE SEGMENT PUBLIC

ASSUME CS:CODE

ORG 100H

START:

MOV DX,04A6H;8255的控制字,A口输入

MOV AX,90H

OUT DX,AX

MOV DX,486H;8250初始化

MOV AX,80H

OUT DX,AX

MOV DX,480H

MOV AX,12

OUT DX,AX

MOV DX,482H

MOV AX,0

OUT DX,AX

MOV DX,486H

MOV AX,3

OUT DX,AX

MOV DX,482H

MOV AX,0

OUT DX,AX

MOV DX,48AH

IN AX,DX

MOV DX,480H

IN AX,DX

LOOP1:

MOV DX,04A0H;从8255的A口输入8个开关的状态IN AX,DX

CALL SEND ;将AX中的内容串行发送出去,可在PC机上显示

JMP LOOP1

SEND:

PUSH AX

MOV DX,48AH

IN AX,DX

TEST AX,20H

JNZ SEND2

POP AX

JMP SEND

SEND2:

POP AX

MOV DX,480H

OUT DX,AX

RET

CODE ENDS

END START

实验现象:8个开关的状态循环显示在PC机的接收区,当开关状态改变时,显示的数据也随之改变。

3.连接8255 和8253 的GATE0 ;使用“串口调试助手”程序控制8253 的振荡。

将8255的片选接到CS0,将8253的片选接到CS1,8255的B口输出,其中PB0与GATE0相连,CLK3(750KHz)与8253CLK0相连,8253的OUT0与8253CLK2相连,OUT2与发光二极管LED1相连

MOV DX,04B6H;8253的控制字,计数器0工作于方式3,二进制计数,先读写低八位,再读写高八位

MOV AX,36H

OUT DX,AX

MOV DX,04B0H;将927CH的初值写入计数器0

MOV AX,7CH

OUT DX,AX

MOV AX,92H

OUT DX,AX

MOV DX,04B6H;设置计数器2工作于方式3,二进制计数,

先读写低八位,再读写高八位

MOV AX,0B6H

OUT DX,AX

MOV DX,04B4H;給计数器2写初值4H

MOV AX,4

OUT DX,AX

MOV AX,0

OUT DX,AX

MOV DX,04A6H;8255的初始化,A口输入,B口输出

MOV AX,90H

OUT DX,AX

MOV DX,486H;8250串行接口的初始化

MOV AX,80H

OUT DX,AX

MOV DX,480H

MOV AX,12

OUT DX,AX

MOV DX,482H

MOV AX,0

OUT DX,AX

MOV DX,486H

MOV AX,3

OUT DX,AX

MOV DX,482H

MOV AX,0

OUT DX,AX

MOV DX,48AH

IN AX,DX

MOV DX,480H

IN AX,DX

LOOP1:

CALL RECV

CALL SEND

MOV DX,04A2H;将AX中的数据(串行发送的数据)从B口输出

OUT DX,AX

JMP LOOP1

SEND:

PUSH AX

MOV DX,48AH

IN AX,DX

TEST AX,20H

JNZ SEND2

POP AX

JMP SEND

SEND2:

POP AX

MOV DX,480H

OUT DX,AX

RET

RECV:

MOV DX,48AH

IN AX,DX

TEST AX,1

JZ RECV

MOV DX,480H

IN AX,DX

RET

CODE ENDS

END START

实验现象:任意键入一个最低位是1的8bit的16进制数据,使GATE0置位,则pc机的接收区会显示输入的数据,同时,LED1灯会一直闪烁

七,实验遇到的问题与实验心得

在做思考题3时,将PB0与GATE0相连,CLK3(750KHz)与8253CLK0相连,8253的OUT0与发光二极管LED1相连,则键入一个8bit的16进制数字后,LED1灯会一直亮或者一直灭,没有闪烁,查了一会儿,发现时时钟CLK3的频率太高,仅经过计数器0分频是不够的,分频后频率依旧很高,LED1灯的闪烁肉眼无法分辨,需要再经过计数器2分频,才能看到灯的闪烁

在8250串行接口实验中,充分体会到了它的“串行”接口作用,特别是8250芯片的编程方法,其清晰的条理使我对它有了更为深刻的理解。8250与8255并行接口芯片的结合使用,更是体会到了串行通信和并行通信的异同。

ADC0809实验

四,实验步骤

1连线,将可变电位器AN0与ADC0809的ADIN0相连;将CS0与ADC0809的片选CS0809端相连;将ADC0809的EOC与74LS244的IN0相连;将CS1与74LS244的片选CS244端相连。

2编辑程序,编译链接后,调试程序。

调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。

五.实验源程序:

CODE SEGMENT PUBLIC

ASSUME CS:CODE

ORG 100H

START:

MOV DX,4A0H;指向通道0

CALL GETAD ;调用A/D转换子程序,取得A/D值

JMP START

DELAY: ;延时子程序

MOV BP,1000H

DELAY1:

DEC BP

CMP BP,0

JNE DELAY1

RET

GETAD: ;A/D转换子程序

PUSH DX

MOV AX,34H启动A/D

OUT DX,AX

CALL DELAY

MOV DX,4B0H ;指向74LS244地址

WAIT1:

IN AX,DX

TEST AX,1

JZ WAIT1 ;EOC=0,正在变换,跳至WAIT1

POP DX ;EOC=1,依次变换完毕,读取A/D值

IN AX,DX

MOV AH,0

RET

CODE ENDS

END START

实验现象:在“JMP START”处设置断点,全速运行到此处,观察到寄存器AX=0045H.当旋转电位器后,AX的值会变化。

六,思考题

1.连接其它通道,修改程序。

将可变电位器AN0与ADC0809的ADIN1相连,其他连线不变。需要将程序中的“MOV DX,4A0H”改为“MOV DX,4A2H”。实验现象同上。

2.将采到的数据发送到 8250 上;在 PC 机观察数据。

CODE SEGMENT PUBLIC

ASSUME CS:CODE

ORG 100H

START:

MOV DX,486H;8250串行接口的初始化

MOV AX,80H

OUT DX,AX

MOV DX,480H

MOV AX,12

OUT DX,AX

MOV DX,482H

MOV AX,0

OUT DX,AX

MOV DX,486H

MOV AX,3

OUT DX,AX

MOV DX,482H

MOV AX,0

OUT DX,AX

MOV DX,48AH

IN AX,DX

MOV DX,480H

IN AX,DX

M1: MOV DX,4A2H;指向通道1

CALL GETAD ;调用A/D转换子程序,取得A/D值

CALL SEND ;调用串行发送子程序

JMP M1 ;循环等待

DELAY: ;延时

MOV BP,1000H

DELAY1:

DEC BP

CMP BP,0

JNE DELAY1

RET

GETAD: ;A/D转换子程序

PUSH DX

MOV AX,34H

OUT DX,AX

CALL DELAY

MOV DX,4B0H

WAIT1: ;指向74LS244地址

IN AX,DX

TEST AX,1

JZ WAIT1

POP DX

IN AX,DX

MOV AH,0

RET

SEND: ;串行发送子程序

PUSH AX

MOV DX,48AH

北京邮电大学微机原理硬件实验报告

北京邮电大学微机原理硬件实验报告

实验报告一:I/0地址译码和简单并行接口 ——实验一&实验二 一、实验目的 掌握I/O地址译码电路的工作原理;掌握简单并行接口的工作原理及使用方法。 二、实验原理及内容 a) I/0地址译码 1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数 字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~ 287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX) Y5输出一个负脉冲。 利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔经过软件延时实现。 2、接线: Y4/IO地址接 CLK/D触发器

Y5/IO地址接 CD/D触发器 D/D触发器接 SD/D触发器接 +5V Q/D触发器接L7(LED灯)或逻辑笔 b) 简单并行接口 1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通 用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器, 8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电 路L0~L7。 2、编程从键盘输入一个字符或数字,将其ASCⅡ码经过这 个输出接口输出,根据8个发光二极管发光情况验证正确 性。 3、按下面图4-2-2简单并行输入接口电路图连接电路 (74LS244插通用插座,74LS32用实验台上的“或门”)。 74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关 输出K0~K7,8个数据输出端分别接数据总线D0~D7。 4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这 个ASCⅡ码,并将其对应字母在屏幕上显示出来。 5、接线:1)输出 按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验 台逻辑或门) 2)输入 按图4-2-2接线(图中虚线为实验所需接线,74LS32为实 验台逻辑或门) 三、硬件连线图 1、I/O地址译码

微机原理与接口技术硬件实验报告

微原硬件实验报告 班级:07118 班 学号:070547 班内序号:26 姓名:杨帆

实验一熟悉实验环境及IO的使用 一,实验目的 1. 通过实验了解和熟悉实验台的结构,功能及使用方法。 2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。 3. 学会Debug 的使用及编写汇编程序 二,实验内容 1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作, 2.用汇编语言编写跑马灯程序。(使用EDIT 编辑工具)实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度 等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) 三,实验步骤 1.实验板的IO 端口地址为EEE0H 在Debug 下, I 是读命令。(即读输入端口的状态---拨码开关的状态) O 是写命令。(即向端口输出数据---通过发光管来查看) 进入Debug 后, 读端口拨动实验台上八位拨码开关 输入I 端口地址回车 屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口 输入O 端口地址xx (xx 表示要向端口输出的内容)回车 查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。 2. 在Debug 环境下,用a 命令录入程序,用g 命令运行 C>Debug -a mov dx, 端口地址 mov al,输出内容 out dx, al

mov ah, 0bh int 21h or al, al jz 0100 int 20h -g 运行查看结果,修改输出内容 再运行查看结果 分析 mov ah, 0bh int 21h or al, al jz 0100 int 20h 该段程序的作用 3.利用EDIT 工具编写汇编写跑马灯程序程序 实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm 录入程序 按Alt 键打开菜单进行存盘或退出 编译文件 C>MASM 文件名.asm 连接文件 C>LINK 文件名.obj 运行文件或用Debug 进行调试。 四,程序流程图

北理工微机原理实验三 使用8251A的串行接口应用实验

本科实验报告 实验名称:实验三使用8251A的串行接口应用实验 课程名称:计算机原理与应用实验实验时间: 任课教师:实验地点: 实验教师: 实验类型:□原理验证■综合设计□自主创新 学生姓名: 学号/班级:组号:学院:同组搭档:专业:成绩:

1. 实验目的 1) 掌握串行通信原理及半双工和全双工的编程方法; 2) 掌握用8251A接口芯片实现微机间的同步和异步通信; 3) 掌握8251A芯片与微机的接口技术和编程方法。 2. 实验原理和内容 8251A是一种可编程的同步/异步串行通信接口芯片,具有独立的接收器和发送器,能实现单工、半双工、双工通信。 1) 8251A内部结构 8251A通过引脚D0~D7和系统数据总线直接接口,用于和CPU传递命令、数据、状态信息。读写控制逻辑用来接收CPU的控制信号、控制数据传送方向。CPU对8251A的读写操作控制表如表3-4所示。 表3-4 CPU对8251A的读写操作控制表 2) 8251A的方式控制字和命令控制字 方式控制字确定8251A的通信方式(同步/异步)、校验方式(奇校/偶校/不校)、字符长度及波特率等,格式如图3-10所示。 命令控制字使8251A处于规定的状态以准备收发数据,格式如图3-11所示。 方式控制字和命令控制字无独立的端口地址,8251A 根据写入的次序来区分。 CPU对8251A初始化时先写方式控制字,后写命令控制字。

3) 状态寄存器 8251状态寄存器用于寄存8251A的状态信息,供CPU查询,定义如图3-12所示。TXRDY位:当数据缓冲器空时置位,而TXRDY引脚只有当条件( 数据缓冲器空?/CTS?TXE)成立时才置位。 溢出错误:CPU没读走前一个字符,下一个字符又接收到,称为溢出错误。

北京交通大学微机原理实验报告

微机原理 实 验 报 告 隋伟 08212013 自动化0801

目录 一、I/O地址译码与交通灯控制实验 (3) 二、可编程定时器/计数器(8253) (6) 三、中断实验(纯DOS) (11) 四、模/数转换器………………………………………………………… 18 五、串行通讯…………………………………………………………… 16 六、课程综合实验(抢答器) …………………………………………… 28 七、自主设计实验——LED显示 (32) 八、参考文献 (35)

一、I/O地址译码与交通灯控制实验 一.实验目的 通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。 二.实验内容 如图5-3,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律燃灭。 十字路口交通灯的变化规律要求: (1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。 (2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。 (3)南北路口的红灯、东西路口的绿灯同时亮3秒左右。 (4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。 (5)转(1)重复。 8255动态分配地址: 控制寄存器: 0C40BH A口地址: 0C408H C口地址: 0C40AH

三.程序流程图和程序清单 DATA SEGMENT X DB ? DATA ENDS STACK1 SEGMENT STACK DW 100H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX ;---------------INIT---------------- MOV DX,0C40BH ;写控制字

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

北邮微原硬件实验

信息与通信工程学院 微原硬件实验报告 姓名: 班级: 学号: 班内序号: 【一.基本的I/O实验】 实验一 I/O地址译码 一、实验目的 掌握I/O地址译码电路的工作原理。 二、实验原理和内容 1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台 上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:

280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX) Y5输出一个负脉冲。 图1-1 利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。 2、接线: Y4/IO地址接 CLK/D触发器 Y5/IO地址接 CD/D触发器 D/D触发器接 SD/D角发器接 +5V Q/D触发器接 L7(LED灯)或逻辑笔 三、硬件接线图及软件程序流程图 1.硬件接线图 2.软件程序流程图

四、源程序 DATA SEGMENT DATA ENDS STACK SEGMENT STACK 'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK ;基本框架;延时子程序 DELAY1 PROC NEAR MOV BX,500H PUSH CX LOOP2: MOV CX,0FFFH WAIT1: LOOP WAIT1 DEC BX JNZ LOOP2 POP CX RET DELAY1 ENDP START: MOV CX,0FFFFH ;L7闪烁控制 LOOP1: MOV DX,2A0H ;灯亮 OUT DX,AL CALL DELAY1 MOV DX,2A8H ;灯灭 OUT DX,AL CALL DELAY1 LOOP LOOP1 ;循环闪烁 CODE ENDS END START 五、实验结果 灯L7闪烁 实验二简单并行接口 一、实验目的 掌握简单并行接口的工作原理及使用方法。(选择273进行实验)二、实验原理和内容

北京理工大学自动化专业微机原理硬件软件实验

微机原理与接口技术 硬件实验报告 班级: 姓名: 学号: 实验一: 8259中断控制器实验 一、实验目的 1. 掌握8259的工作原理。 2. 掌握编写中断服务程序的方法。 3. 掌握初始化中断向量的方法。 二、实验内容 用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。 三、实验设备 微机实验教学系统实验箱、8086CPU模块 四、连线 ①单脉冲发生器输出P+与8259的IR0相连 ②8259的片选CS8259与CS0相连 ③8259的INT与8086的INT相连 ④8259的INTA与8086的INTA相连 ⑤CS273与CS1相连 ⑥00与LED1相连 其它线均已连好如下图: 五、实验步骤 (1)连线。 (2)编辑程序,编译链接后,调试程序。 (3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。 (4)撰写实验报告。

六、实验源程序 CODE SEGMENT PUBLIC ASSUME CS:CODE ORG 100H START: MOV DX,4A0H ;写ICW1 MOV AX,13H OUT DX,AX MOV DX,4A2H ;写ICW2 MOV AX,80H ;IR0的中断向量码为80H OUT DX,AX MOV AX,01 OUT DX,AX ;一般嵌套,非缓冲,非自动EOI MOV AX,0 ;写OCW1 OUT DX,AX ;允许中断 ;中断向量存放在(0000H:0200H)开始的四个单元里 MOV AX,0 MOV DS,AX MOV SI,200H ;中断类型号为80H MOV AX,OFFSET HINT ;中断服务程序的入口地址 MOV DS:[SI],AX ADD SI,2 MOV AX,CS MOV DS:[SI],AX STI ;开中断,设置IF=1 JMP $ ;原地跳转 HINT: ;中断服务程序 XOR CX,0FFH ;CX取反 MOV DX,4B0H ;CS273接口的地址,与8个LED灯相连 MOV AX,CX ;输出高低电平控制LED灯的亮灭 OUT DX,AX MOV DX,4A0H ;OCW2的地址 MOV AX,20H ;一般EOI命令,全嵌套方式 OUT DX,AX IRET ;中断返回 CODE ENDS END START 七、实验思考题 1.将P+连线连接到IR1—IR7任意一个;重新编写程序。 将P+接到IR1,在原程序的基础上,把写ICW2的控制字改为81H,再把中断向量的入口地址改为0204H即可。程序如下: CODE SEGMENT PUBLIC ASSUME CS:CODE

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

8086软硬件实验报告(微机原理与接口技术上机实验)

实验一实验环境熟悉与简单程序设计 实验目的 (1)掌握DEBUG调试程序的使用方法。 (2)掌握简单程序的设计方法。 实验内容 编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。如: BH=10110010B 则运行程序后 DH=00001011B DL=00000010B 实验准备 (1)熟练掌握所学过的指令。 (2)根据实验内容,要求预先编好程序。 实验步骤 (1)利用DEBUG程序输入、调试程序。 (2)按下表要求不断地修改BH的内容,然后记录下DX的内容。 实验报告 (1)给出程序清单。 (2)详细说明程序调试过程。

程序: CODE SEGMENT START : MOV BH,00111111B MOV AL,BH MOV CL,4 SHR AL,CL MOV DH,AL MOV AL,BH AND AL,00001111B MOV DL,AL MOV CL,0 CODE ENDS END START

实验二简单程序设计 实验目的 (3)掌握DEBUG调试程序的使用方法。 (4)掌握简单程序的设计方法。 实验内容 试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello world My name is Li Jianguo 参考程序如下:(有错) data segment out1 db 'Hello world' ax db 'My name is Li Jianguo' data ens code segment assume cs:code;ds:data lea dx,out1 mov ah,2 int 21h mov dl,0ah mov ah,2

微机原理与单片机实验报告

北京联合大学信息学院实验报告 课程名称:微型计算机原理学号: 姓名: 2012 年 6 月 9 日

目录 实验1 EMU8086模拟器的使用 (3) 实验2 数据传送指令的使用 (5) 实验3 多位十六进制加法运算实验 (9) 实验5 循环程序实验 (11) 实验6 由1 到100 求和实验 (13) 实验7 求表中正数_负数_0 的个数实验 (14) 实验8 数据排列实验(冒泡排序) (16) 实验9 系统功能调用(大小写转换) (18) 实验10 阶乘(递归运算) (20) 实验11 ProteusIO工程文件的建立 (21) 实验12 IO口读写实验(245、373) (22) 实验13 8255 接口实验 (24) 实验14 声光报警 (25) 实验总结 (28)

实验1 EMU8086模拟器的使用 一实验要求 利用EMU8086模拟器环境,完成创建源程序文件,运行调试,实验结果的查看二实验目的: 熟悉EMU8086实验环境 三EMU8086环境: 1 模拟器编辑窗口 2 模拟器调试窗口

四实验内容 实验内容1:新建文件。 运行emu8086 1. 新建文件:单击“新建”按钮,选择COM模板,在模拟器编辑窗口中输入如下程序代码: MOV AX, 1020H MOV BX, 2030H MOV AX, BX ADD AX, BX MOV [BX], AX MOV [2032H], AX HLT 2. 编译:单击“编译”按钮,对程序段进行编译; 3. 保存:编译通过,单击“完成”按钮,将其以文件名“EXP1”保存在本地磁盘上。 4. 仿真:单击“仿真”按钮,打开模拟器调试窗口和源文件窗口。 5.在模拟器调试窗口中的寄存器组区,查看数据寄存器AX,BX,CX,DX;段寄存器CS,ES,SS,DS;指令指针寄存器IP;指针寄存器SP,BP;变址寄存器SI,DI;标志寄存器的值。 6.单击“单步前”按钮,单步执行程序,并观察每次单步执行后,相关寄存器值的变化。 7.单击“重载”按钮,将程序重载,并调整指令运行步进时延为400毫秒,单击“全速”按钮,运行程序, 8.程序运行之后,在程序调试窗口中,选择[view]/[memory],查看模拟器环境中,内存单元0700:0100开始的连续10个单元的内容 9.将“存储器”中的地址改为0700:2030,查看开始的四个字节的内容,并思考其内容与程序

北京工业大学微机原理实验报告

微机原理实验报告 —实验二熟悉汇编程序建立 及其调试方法 姓名:刘莹莹 学号:13024104

一、实验目的 1、熟悉汇编语言源程序的框架结构,学会编制汇程序。 2、熟悉汇编语言上机操作的过程,学会汇编程序调试方法。 二、实验内容 1、学习编写汇编语言源程序的方法,了解数据存放格式。 2、阅读给出的程序,找出程序中的错误。 3、通过调试给出的汇编语言源程序,了解并掌握汇编语言程序的建立、汇编、链接、调试、修改和运行等全过程。 三、实验预习 1、阅读实验指导第一章的内容,了解汇编语言程序建立、汇编、链接、调试的全过程。 2、下面的汇编语言源程序有错误的,试给程序加注释。通过调试手段找出程序中的错误并修改之。写出程序的功能,画出程序流程图。(1)程序修改前: STACKSG:SEGMENT PARA STACK ‘STACK’ ;不能有冒号DB 256 DUP(?) STACKSG ENDS DATASG: SEGMENT PARA ‘DATA’;不能有冒号BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512 DW 23,56,420,75,0,-1024,-67,39,-2000 COUNT EQU 20 MAX DW ? DATASG ENDS CODESG: SEGMENT ;不能有冒号ASSUME SS:STACKSG , CS:CODESG ASSUME DS:DATASG ORG 100H BEGIN MOV DS, DATASG ;BEGIN: 应改为MOV AX , DATASG MOV DS, AX LEA SI ,BLOCK

四川大学微机原理实验报告..

微机原理实验报告 学院: 专业班级: 姓名 学号

实验一汇编语言编程基础 1.3汇编语言程序上机操作和调试训练 一.功能说明 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 运用MASM﹒EXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ文件。 运用LINK.EXE文件进行连接,形成*.EXE文件。 仔细阅读和体会DEBUG调试方法,掌握各种命令的使用方法。 运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。 二.程序流程图 设置被除数、商的地址指针 设置单位除法次数计数器 取被除数一位作十进制调整 作字节除法、存商 N 被除数各位已除完? Y 显示运算结果 结束 三.程序代码 修改后的程序代码如下: DATA SEGMENT A D B 9,6,8,7,5 B DB 5 C DB 5 DUP (0) N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX

MOV ES,AX CLD LEA SI,A LEA DI,C MOV CX,N MOV AH,0 LP1: LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C LP2: MOV DL,[DI] ADD DL,30H MOV AH,2 INT 21H INC DI LOOP LP2 MOV AH,4CH INT 21H CODE ENDS END START 四.实验感想和收获 通过这次试验,我对微机原理上级试验环境有了初步的认识,可以较为熟练地对汇编语言进行编译,汇编及连接,同时也学会了用DEBUG调试程序,收获很大。 在这次试验中我也遇到了一些困难。在刚开始我发现自己无法打开MASM.EXE,计算机提示是由于版本不兼容。我这才想起来我的操作系统是64位的,和该软件版本不兼容。不过我并没有放弃,经过我的摸索之后,我发现用DOSBOX这个程序可以解决我的电脑运行不了该程序的问题。在解决了第一个难题后,我开始着手改正试验1.3中的语法错误和逻辑错误,但是无论我怎么修改却始终都无法通过编译,并且基本上每句话都有编译错误。根据我多年编程的经验来看,这应该是中文输入法在搞鬼,之后我耐心地把程序重新输了一遍,果然通过了编译,并且之后的连接也进行的很顺利。在用DEBUG调试时发现得出的结果也很正确。 尽管这次的实验内容非常简单,仅仅是教会我们一些基本的操作,但我却明显感觉到了汇编语言和C语言等高级语言所不同的地方。越是底层,基础的东西就越不人性化,用C语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

微机原理实验报告

微 机 原 理 实 验 报 告 班级: 指导老师:学号: 姓名:

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 图3-1

四、参考程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX

MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL

北邮《微机原理与接口技术》阶段作业汇总

《微机原理与接口技术》作业汇总 1.若欲使RESET有效,只要A即可。 A.接通电源或按RESET键 2.8086微处理器中的ES是D寄存器 D.附加数据段 3.8086 微处理器中BP 寄存器是A A.基址指针寄存器 4.8086/8088 微处理器中的BX是A A.基址寄存器 5.8086/8088微处理器顺序执行程序时,当遇到C指令时, 指令队列会自动复位,BIU会接着往指令队列中装入新的程序段指令。C.JCXZ 6.8086微处理器读总线周期中地址信号AD15~AD0在A期间处于高阻。 A.T2 7.8086/8088 微处理器引脚中B信号线能够反映标志寄 存器中断允许标志IF的当前值。 B.S5 8.访问I/O端口可用地址线有B条。B.16 9.8086/8088 微处理器可访问内存储器地址为A A.00000~FFFFFH 10.字符串操作时目标串逻辑地址只能由B提供 B.ES、DI 11.8086/8088微处理器中堆栈段SS作为段基址,则偏移 量为B。 B.SP 12.若有两个带有符号数ABH和FFH相加,其结果使F 中CF和OF位为C。 C.1;0 13.8086微处理器内部通用寄存器中的指针类寄存器是B。 B.BP 14.8086/8088微处理器内部能够计算出访问内存储器的20位物理地址的附加机构是。B.BIU中的地址加法器15.当标志寄存器TF=1时,微处理器内部每执行完一条 指令便自动进行一次B。B.内部中断 16.8086/8088微处理器内部寄存器中的累加器是A寄存 器。 A.16位数据寄存器 17.8086微处理器中的BIU和EU是处于B的工作状态 B.并行 18.8086中指令队列和堆栈特点分别是C C.先进先出;后进先出 19.微型计算机各部件之间是用A连接起来的。 A.系统总线 20.若把组成计算机中的运算器和控制器集成在一块芯片 上称为C。 C.微处理器 21.相联存储器是指按C进行寻址的存储器。 C.内容指定方式 22.单地址指令中为了完成两个数的算术运算,除地址码 指明的一个操作数外,另一个数常需采用D。 D.隐含寻址方式 23.某存储器芯片的存储容量为8K×12位,则它的地址 线为C。 C.13 24.下列8086指令中,格式错误的是C。 C.MOV CS,2000H 25.寄存器间接寻址方式中,操作数处在C。C.主存单元 26.某计算机字长16位,其存储容量为2MB,若按半字 编址,它的寻址范围是C。 C.2M 27.某一RAM 芯片,其容量为1024×8位,其数据线和 地址线分别为C。 C.8,10 28.CPU在执行OUT DX,AL指令时,A寄存器的内容 送到数据总线上。 A.AL 29.计算机的存储器系统是指D。 D.cache,主存储器和外存储器 30.指令MOV AX, [3070H]中源操作数的寻址方式为C C.直接寻址 31.EPROM是指D D.光擦可编程的只读存储器 32.指令的寻址方式有顺序和跳跃两种方式,采用跳跃寻 址方式,可以实现D.程序的条件转移成无条件转移33.8086 CPU对存贮器操作的总线周期的T1状态, AD0~AD15引脚上出现的信号是A。A.地址信号 34.堆栈是按D组织的存储区域。D.先进后出原则 35.8086/8088中源变址寄存器是A。A.SI 36.8086/8088中SP是D寄存器。D.堆栈指针寄存器 37.8086/8088中FR是A寄存器。A.标志寄存器 38.8086/8088中IP是C寄存器。C.指令指针寄存器 39.假设AL寄存器的内容是ASCII码表示的一个英文字 母,若为大写字母,将其转换为小写字母,否则不变。 试问,下面哪一条指令可以实现此功能A。 A.ADD AL, 20H 40.逻辑右移指令执行的操作是A。 A.符号位填0,并 顺次右移1位,最低位移至进位标志位 41.假设数据段定义如下: DSEG SEGMENT DAT DW 1,2,3,4,5,6,7,8,9,10 CNT EQU ($-DAT)/2 DSEG ENDS 执行指令MOV CX,CNT后,寄存器CX的内容是D D.4 42.在下列段寄存器中,代码寄存器是B。B.CS 43.在执行POP[BX]指令,寻找目的操作数时,段地 址和偏移地址分别是B。B.在DS和BX中 44.设DS=5788H,偏移地址为94H,该字节的物理地址 是B。B.57914H 45.设AX=1000H NEG AX

北京理工大学微机原理实验报告

微机原理与接口技术 实验报告 实验内容:汇编语言程序设计实验 组别:12 姓名: 班级: 学号:

一、实验目的 1、熟悉IDE86集成开发环境的使用。 2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。 3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。 4、掌握利用汇编实现求和与求最值的方法。 5、掌握利用汇编实现数制转换的方法。 6、巩固理论知识,锻炼动手编程,独立思考的能力。 二、实验内容(具体内容) 1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。并查看前5个,前8 个数之和以及各寄存器和内存的状态。 2、在1的基础上修改程序,求出10个数中的最大值和最小值,最后将最大最小值分别赋给MAX及 MIN。 3、求1到 100 的累加和,并用十进制形式将结果显示在屏幕上。要求实现数据显示,并返回DOS 状态。 三、实验方法 1、设计思路 (1)实验1的设计思路:先将10个要相加的数存在以TABLE为首的10个连续的存储单元中,然后利用循环结构依次取出数值放在AL中并累加,若有进位则加到AH中直至循环10次累加结束,将累加的结果放在SUM中并返回DOS状态。 (2)实验2的设计思路:先将10个要比较的数放在以TABLE为首的10个连续的存储单元中。 将第一个数首先赋给AL和AH(分别存储相对最小和最大值)在利用LOOP循环结构,依次和下面的数进行比较,每次把相对的最大值与最小值存储到AH和AL中直至循环9次比较结束,将AH和AL里面的最大值与最小值赋给MAX和MIN,返回DOS状态 (3)实验3的设计思路:先在内存中定义COUNT=100,表示1-100求和,若相求1-n的和并显示只需COUNT的值为n即可,同时定义一块以DNUM为首地址的数据区用于存储累加和的十进制数对应的ASCII码。先利用AX和LOOP求出1-COUNT的累加和存在AX中;在进行数值转化,AX 依次除10取余数保存,将16进制数转化为10进制ASCII码值并存在DUNM中。最后在屏幕上显示并返回DOS状态。 2程序流程图 实验一、二和三的流程图分别如图1、图2和图3所示

微机原理 实验报告

微机原理与接口技术 实验指导书 班级 学号099074 姓名 安徽工业大学计算机学院

实验一存贮器读写实验 一、实验内容 对指定地址区间的RAM(4000H~4FFH)先进行写数据55AAH,然后将其内容读出再写到5000H~5FFH中。 二、实验步骤 l、将实验系统与PC机连接; 2、在PC机上启功DJ-8086k软件,实验系统进入联机状态; 3、在DJ-8086k软件环境下编辑、调试程序,将程序调试、编译通过; 4、运行程序。 5、稍后按RST键退出,用存贮器读方法检查4000H~43FFH中的内容和5000~53FFH中的内容应都是55AA。 三、实验程序清单 CODE SEGMENT ; ASSUME CS:CODE PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 ORG 1850h START: JMP START0 BUF DB ,,,,, data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1 h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV AX,0H MOV DS,AX MOV BX,4000H MOV AX,55AAH MOV CX,0200H RAMW1: MOV DS:[BX],AX ADD BX,0002H LOOP RAMW1 MOV AX,4000H MOV SI,AX MOV AX,5000H MOV DI,AX

微机原理实验报告冒泡排序

一、实验目的 (1)学习汇编语言循环结构语句的特点,重点掌握冒泡排序的方法。 (2)理解并掌握各种指令的功能,编写完整的汇编源程序。 (3)进一步熟悉DEBUG的调试命令,运用DEBUG进行调试汇编语言程序。 二、实验内容及要求 (1)实验内容:从键盘输入五个有符号数,用冒泡排序法将其按从小到大的顺序排序。 (2)实验要求: ①编制程序,对这组数进行排序并输出原数据及排序后的数据; ②利用DEBUG调试工具,用D0命令,查瞧排序前后内存数据的变化; ③去掉最大值与最小值,求出其余值的平均值,输出最大值、最小值与平均值; ④用压栈PUSH与出栈POP指令,将平均值按位逐个输出; ⑤将平均值转化为二进制串,并将这组二进制串输出; ⑥所有数据输出前要用字符串的输出指令进行输出提示,所有数据结果能清晰显示。 三、程序流程图Array (1)主程序:MAIN

(2)

就是 NAME BUBBLE_SORT DATA SEGMENT ARRAY DW 5 DUP(?) ;输入数据的存储单元 COUNT DW 5 TWO DW 2 FLAG1 DW 0 ;判断符号标志 FLAG2 DB 0 ;判断首位就是否为零的标志FAULT DW -1 ;判断出错标志 CR DB 0DH,0AH,'$' STR1 DB 'Please input five numbers seperated with space and finished with Enter:','$' STR2 DB 'The original numbers:','$' STR3 DB 'The sorted numbers:','$' STR4 DB 'The Min:','$' STR5 DB 'The Max:','$' STR6 DB 'The Average:','$' STR7 DB 'The binary system of the average :','$' STR8 DB 'Input error!Please input again!''$' DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA,ES:DATA START: PUSH DS AND AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H ;9号DOS功能调用,提示输入数据 INT 21H CALL CRLF ;回车换行 REIN: CALL INPUT ;调用INPUT子程序,输入原始数据CMP AX,FAULT ;判断就是否出错, JE REIN ;出错则重新输入

微机原理实验报告材料

微型计算机原理及单片机 实验报告 班级: 学号: :

实验一 汇编语言程序设计 1 分支程序设计实验 1.1.1 实验目的 1. 掌握分支程序的结构。 2. 掌握分支程序的设计、调试方法。 1.1.2 实验设备 PC 机一台,TD-PITE 实验装置一套。 1.1.3 实验容 设计一数据块间的搬移程序。设计思想:程序要求把存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图1.1所示。 源数据块 目的数据块0H FFFFFH 源数据 块目的数据块0H FFFFFH 源数据 块 目的数据块0H FFFFFH (a ) (b ) (c ) 图1.1 源数据块与目的数据块在存储中的位置情况 对于两个数据块分离的情况,如图1.1(a ),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论: 当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图1.14(b )所示。 当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图1.14(c )所示。 实验程序流程图如图1.5所示。 1.1.4 实验程序如下 SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START:

MOV CX, 0010H图1.5 程序流程图 MOV SI, 6000H Array MOV DI, 7000H CMP SI, DI JA A2 ADD SI, CX ADD DI, CX DEC SI DEC DI A1: MOV AL, [SI] MOV [DI], AL DEC SI DEC DI DEC CX JNE A1 JMP A3 A2: MOV AL, [SI] MOV [DI], AL INC SI INC DI DEC CX JNE A2 A3: JMP A3 CODE ENDS END START 1.1.5 实验步骤 1. 按流程图编写实验程序,经编译、无误后装入系统。 2. 用E命令在以SI为起始地址的单元中填入16个数。 3. 运行程序,待程序运行停止。 4. 通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同。 5. 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程 序的功能。

相关主题
文本预览
相关文档 最新文档