当前位置:文档之家› 北邮微原硬件实验报告

北邮微原硬件实验报告

北邮微原硬件实验报告
北邮微原硬件实验报告

2015-2016学年第一学期微机原理硬件实验报告

学院:

班级:

学号:

姓名:

序号:

目录

实验一熟悉实验环境及IO的使用 (3)

一实验目的 (3)

二实验内容 (3)

三实验过程 (3)

1 实验原理 (3)

2 流程图 (3)

3 源代码 (4)

4 子程序清单 (6)

5 代码分析 (6)

四实验总结 (6)

实验二8255A并行接口应用 (7)

一实验目的 (7)

二实验内容 (7)

三实验过程 (7)

1 八位数码管位选规律 (7)

2 六位数码管静态显示 (8)

3 六位数码管动态显示 (12)

4 扩展:显示键盘输入学号 (16)

四实验总结 (23)

实验三8253计数器/定时器的应用 (24)

一实验目的 (24)

二实验内容 (24)

三实验过程 (24)

1 蜂鸣器发音规律 (24)

2 音乐发生器 (25)

3 扩展:小键盘弹琴功能 (34)

四实验总结 (40)

实验一熟悉实验环境及IO的使用

一实验目的

1通过实验了解和熟悉实验台的结构,功能及使用方法。

2通过实验掌握直接使用Debug的I、O命令来读写I/O端口。

3学会Debug的使用及编写汇编程序。

二实验内容

1学习使用Debug命令,并用I、O命令直接对端口进行读写操作。

2?用汇编语言编写跑马灯程序。实现功能:

1)通过读入端口状态,选择工作模式(灯闪烁方式、速度等);

2)通过输出端口控制灯的工作状态(低电平灯亮)。

三实验过程

1 实验原理

1?在Debug下,用I是命令读输入端口的状态,即拨码开关的状态,用O命令向端口输出数据,通过LED发光管来查看。

测试结果:

1)?使用命令:I 0EEE0H

?读取开关状态,得出的结果为左低右高,即S0是低位,S7是高位。

2)?实验命令:O0EEE0H

测试LED,改变输入的值可依次测试各个数码管是否正常。LED左边为高位,右

边为低位。

2?分析以下程序段的作用

MOVAH,0BH

INT21H

ORAL,AL

JZ0100

INT20H

该段程序实现了检测键盘状态,在键盘有任意键输入时退出程序返回DOS的功能。该实现依赖于0BH号中断调用和巧妙使用程序入口返回地址直接返回。

在DOS的DEBUG模式下,地址不用添加十六进制H标志。地址默认为16进制,多写了反而画蛇添足产生错误。普通数据为了区分需要添加H。

2流程图

3源代码

DATASEGMENT

PORTEQU0EEE0H

DATAENDS

STACK SEGMENT STACK'STACK'

??DB100DUP(?)

STACKENDS

CODE SEGMENT

ASSUMEDS:DATA,CS:CODE,SS:STACK

BEGIN:MOV AX,DATA

??MOVDS,AX

01111111

?MOVAL,07FH?

;

?MOVDX,PORT

?MOV SI,2

START:PUSH AX??;入栈保存

??INAL,DX???;读取拨码开关状态

?MOVBL,AL??;BL存储拨码开关状态

?POP AX???;出栈恢复

??TEST BL,10H??;00010000.判断左数第五个拨码开关的状态,

;实现灯型的变化

JNZ TWO???;ON状态为两个灯

?CMP SI,1??;判断AL状态

JZ CONT????;SI等于1时AL有两位为0,应恢复为只有一位为0,

??MOV AH,AL

??RORAH,1

?OR AL,AH

??MOV SI,2?;AL恢复为只有一位为0,SI变为2

??JMPCONT

TWO:?CMP SI,2

??JZ CONT?;SI为2时只有AL只有1位为0,应对其变换?MOV AH,AL

?ROR AH,1

?AND AL,AH??;AL有两位为0

?MOV SI,1

CONT:OUT DX,AL

?TESTBL,08H?;00001000.判断第四个拨码开关的状态,实现暂停?JNZ START??;ON状态实现暂停

??TEST BL,02H??;00000010.判断第二个拨码开关的状态,

;实现速度的变化

?JNZ HIGHSP???;ON状态实现高速

MOV BP,0200H?;低速状态时延

?JMPMOVE

HIGHSP:MOVBP,0100H?;高速状态时延

MOVE:CALL DELAY

TESTBL,04H?;判断第三个拨码开关的状态,实现方向的变化??JNZ LEFT??;ON状态为方向向左

RIGHT:?ROR AL,1??;右移,以备点亮下一盏灯

JMP EXIT

?;左移,以备点亮下一盏灯

LEFT:?ROL AL,1?

EXIT:TEST BL,01H?;判断第一个拨码开关的状态

JZ START??;OFF状态继续运行,ON状态实现退出

??MOV AL,0FFH???;实现全灭

?OUT DX, AL

MOV AH,4CH

??INT21H

DELAY PROC

?MOVCX,BP???;BP越大延时次数越多,速度越慢

LOOP1:?PUSHCX

MOVCX,0FFFFH

LOOP2:?LOOP LOOP2

??POP CX

LOOP LOOP1

?RET

DELAY ENDP

CODE?ENDS

ENDBEGIN

4子程序清单

1)子程序名:DELAY

?功能:实现延迟显示,即控制每个LED点亮持续一定时间;

?入口参数:BP,赋值给CX控制循环次数,从而实现速度的控制;

出口参数:无;

?使用寄存器:CX,BP。

5 代码分析

1)通过读取拨码开关地址获得拨码开关状态,将该状态的值赋给BL,实现对灯型、

暂停、速度、方向以及退出的控制。

2)灯型的控制:通过相应拨码开关的状态选择灯型。灯型一共有两种,第一种为每次

亮一盏灯,此时控制输出的寄存器AL中的值只有一位为0,其余七位为1;第二种

为每次亮两盏灯,此时控制输出的寄存器AL中的值两位为0,其余六位为1。使

用寄存器SI表示当前寄存器AL中0的个数,当SI的值与控制灯型的信息不一致

时,通过逻辑与/逻辑或的操作,修改AL的值。

3)?暂停的控制:通过相应拨码开关的状态判断是否执行暂停操作。当需要暂停时,控制

输出的寄存器AL中的值保持不变,当不需要暂停时,控制输出的寄存器AL中的值

循环左移/循环右移。

4)速度的控制:通过相应拨码开关的状态判断速度的大小。在不同的状态下,对BP 赋不同的值,BP作为DELAY子程序的入口参数控制延时的时间从而实现速度

的变化。BP越大,则外循环次数越多,所耗时间越长,每个LED点亮持续时间越

久,即速度越慢。

5)方向的控制:通过相应拨码开关的状态判断方向。在不同的状态下,对控制输出的

寄存器AL中的值循环左移/循环右移,即可控制显示的方向。

6)?退出的控制:通过相应拨码开关的状态判断是否退出程序。

四实验总结

虽然本次实验是第一次微原硬件实验,但是在此之前已经有了一定的软件编程基础,并且在VHDL实验中我们也曾编写过跑马灯实验,因而实验之前对实验原理及代码结构有初步的掌握。实验过程中我们按照讲义中的要求先对拨码开关及LED进行了测试,便捷了之后程序的编写。总而言之,通过本次实验,我们对利用汇编语言对硬件进行编程有了一定的掌握,对后续实验的开展奠定了良好的基础。

实验二8255A并行接口应用

一实验目的

1?掌握8255A的功能及方式0、1的实现。

2?熟悉8255A与CPU的接口,以及传输数据的工作原理及编程方法。

3?了解七段数码管显示数字的原理。

4掌握同时显示多位数字的技术。

二实验内容

1八段数码管的显示规律及数码管的位选规律。.

2?六位数码管静态显示。在数码管电路上静态地显示6位学号,当主机键盘按下任意键时,停止显示,返回DOS。

3?六位数码管动态显示。要求在数码管电路1-6位数码管上,动态显示字符串HELLO,当主机键盘按下任意键时结束。

4?扩展部分:完成扫描键盘(PC口)输入自己的学号,并在数码管上显示。

三实验过程

1 八位数码管位选规律

在方式0(输入/输出)下,以A口为输出口,B口为输出口,A口接六个共阴极数码管的八位段码,高电平点亮数码管的某一段,B口接数码管的位选(即要使哪个数码管亮),高电平选中某一位数码管点亮。

测试结果如下图:

2 六位数码管静态显示

2.1实验原理

1)电路6个数码管的同名阳极段已经复接,当段选寄存器寄存了一个字型编码之后,6

个数码管都将显示出相同的数字。如果要使6个数码管“同时”显示不同的数字,

必须采用扫描显示的方法。

2)?通过选位寄存器选择某一位数码管,显示其数字(对应段值为1),然后关闭此数码管,再

选择下一位数码管进行显示;如果在一秒钟内,每一位数码管都能显示30次以上,则

人眼看到的是几位数码管同时在显示。实验证明,在扫描显示过程中,每一位显示延

迟1ms是最佳选择。

3)在本次实验中,采用行扫描方式,一次扫描6位数码管,并进行反复循环,使得每位

数码管显示虽然存在间隔,但人眼仍为同时显示。每位数码管显示的时间即为显示

延迟,在每一次扫面之后检测键盘状态,若有任意键输入,便退出返回DOS界面。2.2流程图

2.3 源代码

DATA SEGMENT

?NUM DB0F4H,21H,0EDH,0DDH,39H,61H?;学号后六位为210647

DATA ENDS

;-------------------------------------------------------------

STACKSEGMENT STACK 'STACK'

?DB100DUP(0)

STACK ENDS

;-------------------------------------------------------------

CODE ?SEGMENT

?ASSUMECS:CODE,DS:DATA,SS:STACK

STAT:MOV AL,10000000B???;A,B,C口均以方式0输出

?MOV DX,0EE03H?;设置控制地址

?OUT DX,AL????;送控制字到控制地址

MOV AX,DATA

MOV DS,AX??;设置段地址

MOV ES,AX

LOP1:?XOR SI,SI;SI清零

MOVCX,06H??;循环6次,即一个周期6位数码管

?MOV DX,0EE00H?;A口的地址赋给DX,A口接八位段码

??MOV BL,00000001B?;高电平即选中该位数码管点亮

LOP2:MOV AL,NUM[SI]?;将需要显示的数字赋给AL

OUT DX,AL;送AL输出至A端口

?MOV AL,BL;将控制哪一位亮的功能赋给AL

??INC DX????;B口的地址赋给DX,B口接六位数码管

?OUT DX,AL??;送AL输出至B端口,完成指定位显示指定数字

??DECDX?????;重新将A口地址赋给DX

?ROLBL,1?;循环移位,控制下一位数码管亮

INCSI????;SI加1,使得下次显示中改变所显示的数字

CALL DELAY ?;延时,即每位数码管点亮的时间?CALLKEY ?;判断是否有键盘输入

LOOP LOP2 ?;循环6次,6位数码管依次按要求点亮

JMP LOP1??????;循环,重新于第一位开始点亮

;-------------------------------------------------------------

DELAY?PROC NEAR?;延时程序,双重循环

?PUSHBX???;BX入栈,保留BX寄存器中的数据

?PUSH CX?????;CX入栈,保留CX寄存器中的数据

MOV BX,000BH??;BX重新赋值

LOP3:MOVCX,00H;CX重新赋值

LOOP$?;每循环一次,CX自减1,直至结果为0,即FF次?DECBX????;BX减1

JNZ LOP3 ???;结果为0时停止,即循环11次

POPCX???;CX中数据恢复为入栈前的值

POP BX???;BX中数据恢复为入栈前的值

??RET

DELAY?ENDP

;-------------------------------------------------------------

KEY ?PROCNEAR;判断是否有键盘输入

PUSH AX??;AX入栈,保留BX寄存器中的数据

MOV AH,0BH;检查输入设备状态

INT21H

ORAL,AL???;无输入字符AL为00H,有输入为FFH

?;全为0即为无输入,返回主程序

??JZ GOON?

MOVDX,0EE01H?

MOVAL,00H

OUT DX,AL????;完成B端口清零,即6位全灭

??MOVAH,4CH?;退出程序

??INT21H

GOON:POP AX

RET

KEYENDP

;-------------------------------------------------------------

CODE ?ENDS

?END STAT

2.4子程序清单

1)子程序名:DELAY

功能:实现延迟显示,即控制每个LED点亮持续一定时间;

入口参数:无;

出口参数:无;

使用寄存器:BX,CX,FR。

2)子程序名:KEY

功能:判断是否有键盘输入,若有则退出程序;

入口参数:无;

出口参数:无

使用寄存器:AX,DX,FR。

2.5 代码分析

1)静态显示的过程可以分为六个状态,在每个状态中,只有一位数码管工作,显示对应数字信息。系统循环进行这六个状态,当速度合适时有静态显示六位数字的效果。

2)在数据段中定义NUM,在NUM中存入待显示的“210647”六位数字,根据之前测

试得其对应编码为0F4H,21H,0EDH,0DDH,39H和61H;CX表示循环次数;SI

表示显示数字在NUM中的位置;BL控制数码管的工作状态。

3)在每个状态中,将需要显示的信息赋值给AL,送至8位段码的A口输出,然后将BL赋给AL,送至控制6位数码管的B口输出,从而使数码管在不同的位置显示

数字信息。

4)在每个状态结束时,对BL做循环移位,SI自加1,调用延时函数控制显示的速度。

调用判断键盘输入函数,延时之后若无键盘输入,进入下一状态。如此循环完成6

位数码管的显示。

5)若循环一个周期仍无键盘输入,则回到第一个状态重新循环,直至有键盘输入。

6)?延时程序中,采用两层嵌套循环实现延时。对BX,CX采用入栈操作后重新赋值,B

X赋初值为000BH,CX为00H,内循环为每循环一次,CX自减1,直至CX等于0,

即内循环FFFFH次,外循环为每循环一次,BX减一,当BX为0时终止循环,即

外循环0BH次,总共实现FFFFH*0BH次时跳出循环,BX,CX恢复为原值后返

回主程序,实现延时显示。

7)?判断有无键盘输入时,调用DOS命令,AH为0BH即为判断是否有键盘输入,无字

符输入时AL为00H,与自身或操作之后结果仍全为0,返回主程序,若有字符输入

时AL与自身或操作之后结果不为0,对B端口输出00H,即6位数码管全灭之后退

出程序。

3六位数码管动态显示

3.1实验原理

1)数码管动态显示“HELLO”字符串,相当于每次显示6位静态字符,每次显示一定时

:

显示0.

5s

显示0.

5s

显示0.

5s

显示

0.5s

显示

0.5s

显示

0.5s

显示0.5s

2)?

中的程序封装为一个子程序直接使用。增加的功能为需要按一定时间间隔移位读取

“HELLO”,程序中通过将其前加入六个空字符,作为码表存储,第一次读取为六个空

字符,第二次为五个空字符和字符“H”,第三次为四个空字符和字符“HE”,依次类

推,显示时依次往后读取即可。

3)?可以通过读取拨码开关输入的状态,控制延时的时间,从而实现速度快慢的变化以及实现暂停的功能。

3.2流程图

3.3源代码

DATA SEGMENT

MESG DB0,0,0,0,0,0,3DH,0DCH,8CH,8CH,0EDH,0

??;据显示规律“HELLO”对应码表为3DH,0DCH,8CH,8CH,0EDH

DATA?ENDS

;-------------------------------------------------------------

STACK SEGMENT STACK 'STACK'

DB100DUP(0)

STACKENDS

;-------------------------------------------------------------CODE SEGMENT

?ASSUME DS:DATA,CS:CODE,SS:STACK

;-------------------------------------------------------------

MAIN PROC FAR

??MOV AX,DATA

?MOV DS,AX??;设置段地址

MOVES,AX??

MOV AL,80H

?MOVDX,0EE03H

OUTDX,AL?;端口A,B,C均以方式0输出

LOP6:?MOV BX,OFFSET MESG ;设置偏移量

?MOV CX,07H?;循环次数,对应7个状态

LOP5:MOV DX,0EEE0H?;拨码开关状态控制显示速度

??IN AL,DX???;读拨码开关状态给AL

?INCAL??;自加1,预防全0时不便延时

?ANDAL,07H??;取低三位的值

?XOR AH,AH??;高八位清零

?MOVDX,AX?;DX表示显示速度

LOPZ:CALLDISP??;调用静态显示函数

??DEC DX??;DX为拨码开关后三位状态,自减1

?JNZLOPZ;DX不为0时继续显示

??;DX越大同一状态显示时间越长,速度越慢

?INCBX?;自加1,BX指向下一状态

LOOP LOP5?;循环7次,实现滚动效果

?JMPLOP6 ?;每次循环结束后回到第一个状态

MAIN ENDP

;-------------------------------------------------------------

DISP PROCNEAR;将静态显示封装为子程序

?PUSH CX?;入栈保护

?PUSH DX

?PUSH AX

MOVBP,000AH;控制延时

LOPX:?XOR SI,SI

??MOV CX,06H??;循环6次,即依次点亮6位数码管

?MOVDX,0EE00H

?MOVAH,00000001B?;一次只亮一位

LOP2:MOV AL,MESG[BX+SI];需要显示的字符对应的码值赋给AL

?OUTDX,AL???;完成段码输出

??MOVAL,AH??;控制第几个数码管工作

??INC DX

??OUT DX,AL;完成位码输出

?DEC DX

?ROL AH,1?;下一个数码管工作

?INCSI

?CALL DELAY ;调用延时函数实现每位数码管的延时显示

CALLKEY ?;调用判断键盘输入状态的函数

?LOOPLOP2?;如此循环直至数码管依次被点亮

?DEC BP???;自减1

?JNZ LOPX ?;BP不为0则继续循环,即显示的字符串不变

?POPAX???;出栈恢复

POP DX

?POP CX

?RET

DISP ENDP

;-------------------------------------------------------------

KEY?PROC NEAR;判断是否有键盘输入

??PUSHAX?;入栈保护

MOVAH,0BH

?INT21H?;DOS调用,将键盘输入信息赋给AL

ORAL,AL

?JZ GOON?;若没有输入则继续工作

??MOV DX=0EE00H

?MOV AL,00H??;若有输入则六个数码管均不工作

?OUTDX,AL

MOVAH,4CH;退出程序

INT21H

GOON:POP AX

?RET

KEY?ENDP

;-------------------------------------------------------------

DELAYPROC?;控制延时,两层循环

?PUSH AX???;入栈保护

?PUSH CX

MOVAX,000BH??;外循环0BH次

LOPD:MOV CX,0H

LOOP$?;内循环FFFF次

??DEC AX

JNZLOPD

POPCX

POP AX

?RET

DELAY ?ENDP

;-------------------------------------------------------------

CODE?ENDS

END MAIN

3.4子程序清单

1)?子程序名:DELAY

功能:实现延迟显示,即控制每个LED点亮持续一定时间;

入口参数:无;

出口参数:无;

使用寄存器:AX,CX,FR。

2)子程序名:KEY

功能:判断是否有键盘输入,若有则退出程序;

入口参数:无;

出口参数:无;

使用寄存器:AX,DX,FR。

3)?子程序名:DISP

功能:静态显示6位指定字符;

入口参数:无;

出口参数:无;

使用寄存器:AX,CX,DX,SI,BP,FR。

3.5 代码分析

1)?动态显示的过程可以分为七个状态,在每个状态中,静态显示六位数码管信息。系统循

环进行这七个状态,当速度合适时有动态显示的效果。

2)?在数据段中定义MESG数组,依次存入“0,0,0,0,0,0,3DH,0DCH,8CH,8CH,

0EDH,0”;CX表示循环次数,对应表中的七个状态;BX表示当前需要显示的状

态,DX表示动态显示的速度。

3)将静态显示的程序封装为子程序以供调用,在每个状态中调用子程序DISP实现六位数码管的静态显示,调用子程序DELAY实现延时,调用子程序KEY判断键

盘有无输入。

4)?每个状态结束时,BX加1,表示进入下一状态,如此循环完成数码管的动态显示。

5)?主程序中通过读取拨码开关状态,将其后三位赋给DX,并在子程序DISP返回时,自减实现延时。DX越大,循环时间越久,则对应的滚动速度越慢。

6)若循环一个周期仍无键盘输入,则回到第一个状态重新循环,直至有键盘输入。

4 扩展:显示键盘输入学号

4.1实验原理

通过4*4键盘电路输入学号,其控制原理如下:

1)通过地址为EE02的端口C读取键盘输入,其中PC4、PC5、PC6、PC7分别

接行输入,PC3、PC2、PC1、PC0分别接列输入。此外,本次实验识别闭合键

的方法为行扫描法,具体方法为使键盘某一行线为低电平,其余为高电平,然后读取

列值,如列值中有某位位低电平,则表明行列交叉点处的键被按下;否则扫描下行,

直到扫完全部的行线为止。另外,在读取按键输入时需增添相应的防抖代码,以

避免读取误差。

2)基于上述方法,获得低电平的行列交叉点为按键输入,反馈其对应的数字至数码显示输出或执行相应的功能。

4.2 流程图

1)主程序流程图

2)?READ子程序

4.3 源代码

DATA ?SEGMENT

??ID DB6DUP(0)

;4*4键盘

ARRAY ?DB11100111B,11101011B,11101101B,11101110B

??DB11010111B,11011011B,11011101B,11011110B

??DB10110111B,10111011B,10111101B,10111110B

?DB01110111B,01111011B,01111101B,01111110B

KEY?DB0EDH,21H,0F4H,0F1H,39H;数字0~4对应码表

?DB0D9H,0DDH,61H,0FDH,0F9H;数字5~9对应码表

DATA ENDS

;-----------------------------------------------------

STACK?SEGMENT STACK 'STACK'

??DB100DUP(0)

STACKENDS

;-----------------------------------------------------

CODE SEGMENT

?ASSUME DS:DATA,CS:CODE,SS:STACK

;----------------------------------------------------- MAIN ?PROC FAR

MOVAX,DATA

??MOV DS,AX???;设置段地址

MOV ES,AX

MOV DX,0EE03H

?MOV AL,16H??;C口PC3复位

OUTDX,AL

CLEAR:XORDX,DX;DX表示已显示/存储数字的个数MOV CX,6????;循环次数,表示最多显示/存储的数字个数?MOV AL,0

??XOR SI,SI

LOPC:MOV ID[SI],AL??;将6位ID清零

?INCSI

??LOOP LOPC

DELETE:NOP

AGN1:?CALL READ ;读入按键信息

?CMP AL,0FFH?;判断是否释放按键(防抖动)

?JNEAGN1 ??;未释放则循环

??

?CMP DX,0?;当前没有显示数字时跳过删除操作JE NEXT

?DEC DX;将存储的数字减少一位

?MOV AL,0

??MOVSI,DX

?MOV ID[SI],AL?;将显示的最后一位数字清零

NEXT:CALL DISP ;调用静态显示函数

CALL READ??;调用读取键盘函数

?CMP AL,0FFH??;判断键盘是否有输入

?JE NEXT ;没有输入则循环保持原状

??;键盘有输入

CLD?;设置字符串操作时DI自动加一

?MOV CX,16???;循环次数,表示键盘16个按键

?MOV DI,OFFSET ARRAY

REPNZSCASB?;寻找输入的按键在键盘中的位置

MOV BX,OFFSET ARRAY

SUB DI,BX??

??DECDI???;DI表示输入按键的位置

?CMP DI,9??;判断键入是否为数字

??JBEISNUM;跳转到显示数字对应程序

??CMPDI,12??;判断键入是否为清除键(C)

?JE CLEAR?;跳转到清除对应程序

?CMP DI,13??;判断键入是否为删除键(D)

JEDELETE???;跳转到删除对应程序

?CMP DI,14???;判断键入是否为退出键(E)

?JE EXIT ?;跳转到退出对应程序

JMPNEXT

ISNUM:NOP

AGN2:?CALLREAD?;读入按键信息

?CMPAL,0FFH?;判断是否释放按键(防抖动)

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

微原硬件实验报告 班级: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 进行调试。 四,程序流程图

微机原理与接口技术 北邮 软件 实验报告

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

实验B 分支、循环程序设计 一、实验目的 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的DOS功能调用。 二、实验任务及内容 1.安排一个数据区,内存有若干个正数,负数和零。每类数的个数都不超过9。 2.编写一个程序统计数据区中正数,负数和零的个数。 3.将统计结果在屏幕上显示。 4. 选作题: 统计出正奇数,正偶数,负奇数,负偶数以及零的个数.

四、源程序 DISPSTR MACRO STR ;打出字符串(属于DOS功能调用)MOV AH,9 MOV DX,SEG STR MOV DS,DX MOV DX,OFFSET STR INT 21H ENDM DISPNUM MACRO NUM ;打出数字(属于DOS功能调用)MOV AH,2 MOV DL,NUM ADD DL,30H ;加30H变为ASCII码 INT 21H ENDM DATA SEGMENT NUM DB 3,2,7,0,1,0,-5,-4,0 COUNT EQU $-NUM ;统计数据个数 ZEROS DB 0 ;各类数初值均为0 PLUSES DB 0 MINUSES DB 0 EVENMINUSES DB 0 ODDMINUSES DB 0 EVENPLUSES DB 0 ODDPLUSES DB 0 ZEROSTR DB 0DH,0AH,'ZERO:$' ;待输出字符串

PLUSSTR DB 0DH,0AH,'PLUS:$' MINUSSTR DB 0DH,0AH,'MINUS:$' EVENMINUSSTR DB 0DH,0AH,'EVENMINUS:$' ODDMINUSSTR DB 0DH,0AH,'ODDMINUS:$' EVENPLUSSTR DB 0DH,0AH,'EVENPLUS:$' ODDPLUSSTR DB 0DH,0AH,'ODDPLUS:$' DATA ENDS STACK SEGMENT STACK 'STACK' DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START PROC FAR PUSH DS ;初始化 MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV CX,COUNT ;CX控制循环次数 MOV SI,OFFSET NUM ;SI指向数据的偏移地址 LOOP1: CMP BYTE PTR[SI],0 ;将SI指向的内容与0比较大小JZ ZERO ;等于0跳转 JG PLUS ;大于0跳转 INC MINUSES ;负数加一 SHR BYTE PTR[SI],1 ;判断是负奇数还是负偶数 JNC EVENMINUS ;是负偶数跳转 INC SI ;SI指针后移 INC ODDMINUSES ;负奇数加一 RETURN: LOOP LOOP1 ;循环直至CX=0 JMP DISP ;循环结束后跳转至打出结果 ZERO: INC ZEROS INC SI JMP RETURN ;返回循环体 PLUS: INC PLUSES SHR BYTE PTR[SI],1 JNC EVENPLUS

微实验报告

本科生实验报告 实验课程微机原理与接口技术 学院名称信息科学与技术学院 专业名称电子信息工程 学生姓名干娜 学生学号201413080229 指导教师李志鹏 实验地点6B610 实验成绩 二〇一六年十月二〇一六年十二月

实验一、动态调试程序DEBUG 一、实验目的 1.动态调试程序DEBUG环境的搭建; 2.掌握各种汇编指令的作用; 3.掌握磁盘文件操作命令的使用; 4.掌握查找、比较、填充和移动内存命令的使用。 二、实验内容 1.搭建汇编调试环境,安装DOS系统; 2.进行DEBUG动态调试程序的启动与退出; 3.进行汇编、执行、跟踪与反汇编命令的编写与运行; 4.进行显示、修改内存和寄存器命令的编写与运行; 5.进行查找、比较、填充和移动内存命令的编写与运行。 三、DEBUG的启动与退出 DEBUG的启动:首先选择一个磁盘,建立一个名为“TEST”的文件,文件名可以任意,然后挂载DOS系统在任意磁盘上,执行代码界面为: 出现“-”表示执行成功,进入DEBUG调试环境,此后可以进行代码的编译与执行。 DEBUG的退出命令:-Q 四、汇编、执行、跟踪与反汇编 1.A命令:逐行汇编命令,主要用于小段程序的汇编和修改目标程序。使用逐行汇编命令的格式为: A[地址] 实验内容:汇编一小段程序,DOS运行界面为:

该段程序完成了对AX,BX,CX,DX寄存器写入规定的数据。 2.G命令:启动运行一个程序或程序的一段,编写格式为: G[=<起始地址>][<断点地址>…] 执行A命令的代码后,运用G命令查看各个寄存器状态: 结果分析:从运行结果可以看出,BX、CX、DX已经写入了输入值,但AX 中的值并不是输入值,可能是AX寄存器的值写入后又被改变。 3.T命令 T命令用来逐条跟踪程序的运行,编写格式如下: T[=<地址>][<跟踪条数>] 每条指令执行后,都要暂停并显示各寄存器的内容,跟踪执行实际上是单步执行,执行结果如下: 从地址100开始,跟踪三条指令,从执行细节可以看出AX、BX、CX、DX都写入了程序给定的值,IP指针的值也是逐条递增。 4.U命令:用来对二进制代码程序进行反汇编,常用于分析和调试目标程序,引用格式如下: U[<地址>]

北邮微原硬件实验报告

2013年微机原理硬件实验报告 学院:信息与通信工程学院班级:2011211104 姓名:

实验一 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输出一个负脉冲。 原理:地址2A0H的A5,A4,A5为100,在输入或输出时,IOW或I OR为0,使得74LS138被选中,经过译码,在Y4口输出负脉冲。其他同理。 图1-1 利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。 2.接线:Y4/IO地址接CLK/D触发器

Y5/IO 地址 接 CD/D 触发器 D/D触发器 接 SD/D 角发器 接 +5V Q /D 触发器 接 L7(L ED 灯)或 逻辑笔 三.程序流程图 四.源程序 DA TA ?SE GMENT D ATA ??ENDS ST ACK SE GME NT ST ACK 'STA CK' DB 100H DU P(?) STA CK ENDS 否

北邮微原硬件实验

信息与通信工程学院 微原硬件实验报告 姓名: 班级: 学号: 班内序号: 【一.基本的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进行实验)二、实验原理和内容

北邮微机原理中断程序报告

北京邮电大学实验报告 题目:微机原理软件实验 学院:信息与通信工程 专业:信息工程______ 中断实验报告 一、实验目的 1、初步掌握中断程序的设计方法; 2、初步掌握修改 DOS 系统中断,以适应实际使用的方法。

二:实验要求 编一程序,在显示器上显示时、分、秒。 1:借用计数器8253的Timer0作为中断源,通过8259A下向CPU发中断,每10ms 产生一次中断。 2:在中断服务程序中管理刷新时、分、秒。 3:输入文件名(如:CLK)后清屏显示 Current time is XX:XX:XX(时分秒键盘输入) 打回车,时、分、秒开始计时,时钟不停的刷新。 4:当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。 提示: 1、8253的初始化程序段可借用。 2、口地址为40H、41H、42H、43H,控制字为36H=00110110B 3、时间常数TC=11932:1.1932MHz/11932=100Hz,输出方波频率为100Hz,其周期为1000/100=10ms 三:设计思路 这个实验需要用到中断控制器8259A和计数器8253。我们先初始化8253的工作方式,利用工作方式3来计数时间,让其分频后产生100hz的方波,每100个周期即为1s,将这个方波作为中断源,通过8259A每10ms向CPU发出一次中断。然后我们将子程序Timer0的地址(CS以及IP)设置为中断向量,每次中断即执行这个子程序,在这个之程序中编写相应代码,看时间是否到1S,没到则跳出中断,等待下一次(1ms之后)中断到来,到1S则让时间+1并且重置计数值,再加上相应的时间显示程序,这样即可实现时间的自动增加与显示,可以当做一个计时器来用,这即是这个工程的主体部分。 除此之外,还需要一部分程序来实现键盘输入相应时间,这里要注意时间的每一位都有取值方面的要求,这里就要通过一系列的CMP/JMP指令的组合来达到正确输入的效果,将顺序输入的时间存储起来,配合Timer0子程序即可输出当前设置的时间并且实现时间刷新。当然,如果选择不输入时间直接回车的话,程序可以从0开始计时,可以当成一个秒表。 还有一些细节的设计如在计时过程中输入S可以重新设置时间,Ctrl+C可以退出这些也是利用CMP/JMP组合来实现。最后整个程序可以实现以下功能:可以设置开始时间然后自动计时,也可以当做秒表来使用,可以正常退出。 四:实验流程

微波仿真实验报告(北邮)

北京邮电大学 微波仿真实验报告实验名称:微波仿真实验

姓名:刘梦颉 班级:2011211203 学号:2011210960 班内序号:11 日期:2012年12月20日 一、实验目的 1、熟悉支节匹配的匹配原理。 2、了解微带线的工作原理和实际应用。 3、掌握Smith图解法设计微带线匹配网络。 4、掌握ADS,通过SmithChart和Momentum设计电路并仿真出结果。 二、实验要求 1、使用软件:ADS 2、实验通用参数: FR4基片:介电常数为4.4,厚度为1.6mm,损耗角正切为0.02 特性阻抗:50欧姆 3、根据题目要求完成仿真,每题截取1~3张截图。

三、实验过程及结果 第一、二次实验 实验一: 1、实验内容 Linecal的使用(工作频率1GHz) a)计算FR4基片的50欧姆微带线的宽度 b)计算FR4基片的50欧姆共面波导(CPW)的横截面尺寸(中心信号线 宽度与接地板之间的距离) 2、相关截图 (a)根据实验要求设置相应参数

(b)根据实验要求设置相应参数 实验二 1、实验内容 了解ADS Schematic的使用和设置2、相关截图:

打开ADS软件,新建工程,新建Schematic窗口。 在Schematic中的tools中打开lineCalc,可以计算微带线的参数。 3、实验分析 通过在不同的库中可以找到想要的器件,比如理想传输线和微带线器件。在完成电路图后需要先保存电路图,然后仿真。在仿真弹出的图形窗口中,可以绘制Smith图和S参数曲线图。

实验三 1、实验内容 分别用理想传输线和微带传输线在FR4基片上,仿真一段特性阻抗为50欧姆四分之波长开路线的性能参数,工作频率为1GHz。观察Smith圆图变化。 2、相关截图 (1)理想传输线

微机原理实验报告软件实验1-4

微机原理实验报告 学院:算机科学与软件教育学院 1. 掌握存储器读写方法 2. 了解存储器的块操作方法 二、实验原理 存储器读写和块操作 三、实验设备仪器及材料 计算机,WA VE 6000软件 四、实验过程 S1.asm 代码流程图 data segment Block db 256 dup(55h) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov bx, offset Block ; 起始地址 mov cx, 256 ; 清256 字节Again: mov [bx], byte ptr 0 inc bx ; 地址+1 Loop Again ; 记数减一jmp $ ;死循环code ends end start

五、实验步骤 (1) 进入Wave6000,输入程序并检查,保存程序。 (2) “编译”程序。 (3) “全速执行”程序。 (4) “暂停”程序运行,在“数据窗口(MEMOREY)”查看0400H起始的单元内容,并记录。 (5) 在指令“jmp $”处设断点。“全速执行”程序。 (6) 在“数据窗口(MEMOREY)”查看0400H起始的单元内容,记录并分析实验结果。 六、实验结果及总结 运行前:运行后: 2、调试:如何将存储器块的内容置成某固定值(例全填充为0FFH)? 总结:通过本实验,我了解到单片机读写存储器的读写方法,同时也了解到单片机编程,调试方法。学会内存的移动方法,也加深对存储器读写的认识。

微机原理实验报告 学院:算机科学与软件教育学院 实验 课程 名 微机原理实验成绩实验 项目名称实验二、二进制到BCD码转换 指导老 师 1. 了解BCD值和ASCII值的区别。 2. 了解如何将BCD值转换成ASCII值。 3. 了解如何查表进行数值转换及快速计算。 二、实验原理 ASCII码表 三、实验设备仪器及材料 计算机,WA VE 6000软件 data segment Result db 3 dup(?) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov ax, 123 mov cl, 100 div cl mov Result, al ; 除以 100, 得百位数 mov al, ah mov ah, 0 mov cl, 10 div cl mov Result+1, al ; 余数除以 10, 得十位数 mov Result+2, ah ; 余数为个位 数 jmp $ code ends end start 代码流程图

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

《微机原理与接口技术》作业汇总 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 ($-DA T)/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

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

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

实验报告一: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地址译码

计算机组成原理微程序控制单元实验报告

姓名 学号 班级 ******************年级 指导教师 《计算机组成原理》实验报告 实验名称微程序控制单元实验、指令部件模块实验、时序与启停实验 实验室实验日期 实验七微程序控制单元实验 一、实验目的 ⒈ 掌握时序产生器的组成方式。 ⒉ 熟悉微程序控制器的原理。 ⒊ 掌握微程序编制及微指令格式。 二、实验原理 图 7- 7- 1

图 7-7-4 微地址控制原理图 微程序控制单元实验原理就是人为的给出一条微指令的地址,人为的去打开测试开关,观察机器怎么运行,打个比方就是我要你执行我下的某条命令,我先告诉你命令写在哪页纸上, 你找到纸后,分析命令是什么之后再去执行。 观察机器微程序控制器的组成见图7-1-1 ,微地址的打入操作就是由操作者给出一条微指令 的地址(同上面的例子就是仅仅告诉你我让你跑的这条命令写在哪页纸上,而没有告诉你 命令的具体内容),不需要做测试去判断这是什么指令,所以由图7-7-1 ,其中微命令寄存器 32 位,用三片 8D 触发器 (273) 和一片 4D(175) 触发器组成。它们的清零端由CLR来控制微控制器的清零。它们的触发端CK接 T2,不做测试时 T2 发出时钟信号,将微程序的内容 打入微控制寄存器(含下一条微指令地址)。打入了微指令的地址(即告诉你命令在哪页纸上,此时你需要先找到这页纸并判断命令是叫你做什么,然后执行),进行测试,T4 发出时钟信号,转移逻辑满足条件后输出的负脉冲通过置位端将某一触发器输出端置为“1”状态,按图 7-7-4 所示,微地址锁存器的置位端R 受 SE5~SE0控制,当测试信号 SE5~SE0输出负脉冲时,通过锁存器置位端R将某一锁存器的输出端强行置“1”,实现微地址的修改与转移,此时的地址指的是指令的操作码的地址(即你已经知道命令是跑,此时做的是跑的行为)。再由数据开关置入微地址的值,再做测试,再跳到指令的操作码的地址准备开始执行 指令,这就是微程序控制单元实验的原理。

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

北邮微机原理软件实验报告

微机原理软件实验报告

实验二分支,循环程序设计 一、预习题: 1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来? 答:要屏显0-9的数码,可以调用02h中断,然后将要显示的数码的ASCII码存进DL 里,然后执行INT 21H就可以打印字符。当然,若不只一个数,调用09h中断(显示字符串)更好,但要将DS:DXZ指向要显示的数字在内存中的首地址,并要求以$结束。 2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法? 答:CMP X,0 检验标志位CF CF=1,X为负数 CF=0接着检验ZF:ZF=1,X为零,ZF=0,X为正数 二、实验目的: 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的DOS 功能调用. 三、实验内容: 1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过9. 2.编写一个程序统计数据区中正数,负数和零的个数. 四、实验源代码 assume cs:code,ds:data data segment buff db 1,2,3,4,5,-1,-2,-3,0,0 ;安排的数据区 string db '>0:' plus db 0 ;用变量plus来存储正数的个数 db 0ah,0dh string1 db '=0:' zero db 0 ;用变量zero来存储零的个数 db 0ah,0dh string2 db '<0:' minus db 0 ;用变量minus来存储负数的个数 db '$' data ends code segment start:movax,data movds,ax mov cx,10 ;初始化,并将CX赋为10,因为共有10个数 mov dx,0 ;将计数器dx,ah初始化为0 mov ah,0 lea bx,buff compare:cmp byte ptr [bx],0 ;取出一个数与0进行比较 jgeplu ;大于等于0,跳至plu执行 inc ah ;小于0,用ah暂存小于0的个数,ah+1 jmp next ;比完后进行下一个数的比较

北邮电磁场与微波实验天线部分实验报告二

北邮电磁场与微波实验天线部分实验报告二

信息与通信工程学院电磁场与微波实验报告

实验二网络分析仪测试八木天线方向图 一、实验目的 1.掌握网络分析仪辅助测试方法; 2.学习测量八木天线方向图方法; 3.研究在不同频率下的八木天线方向图特性。 注:重点观察不同频率下的方向图形状,如:主瓣、副瓣、后瓣、零点、前后比等; 二、实验步骤: (1) 调整分析仪到轨迹(方向图)模式; (2) 调整云台起点位置270°; (3) 寻找归一化点(最大值点); (4) 旋转云台一周并读取图形参数; (5) 坐标变换、变换频率(f600Mhz、900MHz、1200MHz),分析八木天线方向图特性; 三、实验测量图 不同频率下的测量图如下: 600MHz:

900MHz:

1200MHz:

四、结果分析 在实验中,分别对八木天线在600MHz、900MHz、1200MHz频率下的辐射圆图进行了测量,发现频率是900MHz的时候效果是最好的,圆图边沿的毛刺比较少,方向性比较好,主瓣的面积比较大。 当频率为600 MHz的时候,圆图四周的毛刺现象比较严重,当频率上升到1200MHz时,辐射圆图开始变得不规则,在某些角度时出现了很大的衰减,由对称转向了非对称,圆图边缘的毛刺现象就非常明显了,甚至在某些角度下衰减到了最小值。 从整体来看,八木天线由于测量的是无线信号,因此受周围环境的影响还是比较大的,因此在测量的时候周围的人应该避免走动,以减小对天线电磁波的反射从而减小测量带来的误差使得圆图更接近真实情况。 由实验结果分析可知:最大辐射方向基本在90°和270°这条直线上,图中旁瓣均较小,及大部分能量集中在主瓣。 八木天线由于测量的是无线信号,因此受周围环境的影响还是比较大的,因此在测量的时候应当尽量保持周边环境参数一定,以减小对天线电磁波的反射从而减小测量带来的误差使得圆图更接近真实情况。 五、实验总结

北邮微原软件实验报告

2013年微机原理软件实验报告 学院:信息与通信工程学院 班级:2011211104 姓名:

实验二分支,循环程序设计 一.实验目的: 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的DOS 功能调用 二.实验内容: 1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过9. 2.编写一个程序统计数据区中正数,负数和零的个数. 3.将统计结果在屏幕上显示. 三.预习题 1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来? 0-9的ACSII码为,30h,31h,32h,34h,35h,36h,37h,38h,39h, 将要显示的数加上30h,得到该数的ACSII码,再利用DOS功能调用显示单个字符 2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法? 利用cmp指令,利用TEST指令,将该数与0相与,将该数与0相减,观察标志位。

四.程序流程图

五.源程序 DATA SEGMENT ;数据段 NUM DB 1,2,-2,3,-3,5,2,4,-6,-11,100,0,0,34,-55,-33,0 ;待处理数据COUNT EQU $-NUM ;数据个数 MINUS DB 0 ;小于零的个数 ZERO DB 0 ;等于零的个数 PLUS DB 0 ;大于零的个数 RESULT DB 'NEGNUM=',?,0AH,0DH,'ZERONUM=',?,0AH,0DH,'POSNUM=',?,0AH,0DH,'$' ;结果显示字符串 DATA ENDS STACK SEGMENT STACK 'STACK' ;堆栈段 DW 50 DUP(?) STACK ENDS CODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV CX,COUNT MOV SI,OFFSET NUM AGAIN: MOV AL,[SI] ;循环比较 CMP AL,0 JGE NEXT1 INC MINUS JMP DONE NEXT1: JZ NEXT2 INC PLUS JMP DONE NEXT2: INC ZERO DONE: INC SI LOOP AGAIN ;返回结果 MOV DI,OFFSET RESULT MOV AL,MINUS ADD AL,30H MOV BYTE PTR[DI+7],AL MOV AL,ZERO ADD AL,30H MOV BYTE PTR[DI+18],AL MOV AL,PLUS ADD AL,30H MOV BYTE PTR[DI+28],AL

北邮—微机原理与接口技术(1)

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

目录 1.实验一微机实验平台介绍及IO的使用 (3) 1.1.实验目的 (3) 1.2.实验内容及要求 (3) 1.3.实验环境及背景 (3) 1.4.实验步骤 (4) 1.4.1.使用debug的I、O命令读写端口 (4) 1.4.2.使用文本编辑器edit和编译器masm (5) 1.5.思考题 (11) 1.6.心得体会 (11) 参考资料 (12) 声明与致谢 (12)

1.实验一微机实验平台介绍及IO的使用 1.1.实验目的 1.1.1通过实验了解和熟悉实验台的结构,功能及使用方法; 1.1.2通过实验掌握直接使用debug的I、O命令来读写IO端口; 1.1.3学会debug的使用及编写汇编程序。 1.2.实验内容及要求 1.2.1学习使用debug命令,并用I、O命令直接对端口进行读写操作, 1.2.2用汇编语言编写跑马灯程序。(可以使用EDIT编辑工具。)要求实现以下两个功能:A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等);B.通过输出端口控制灯的工作状态(低电平灯亮)。 1.2.3使用时要注意,电源打开时不得插拔电缆及各种器件,一定要在断电的情况下连接电路,否则可能会烧坏整个实验系统。 1.3.实验环境及背景 我们使用PCI_IDE50扁平电缆将PC机与实验扩展模块连接起来。在扩展实验平台上,有八个发光二极管、八个拨码开关。读取拨码开关和写发光二极管的端口地址已经被做成了0E8E0h。连接的PC机上安装有DOS操作系统,并有MASM5开发工具。

图1扩展实验模块 1.4.实验步骤 1.4.1.使用debug的I、O命令读写端口 进入DOS,在命令行模式下输入命令debug,用-a选项写入下列程序:CODE (debug mode) MOV DX, E8E0 MOV AL, FE OUT DX, AL MOV AH, 0B INT 21 OR AL, AL JZ 0100 INT 20 输入结束后,直接输入回车即可推出-a。然后,用-g选项运行程序,查看结果。发现最右边的LED亮,其他不亮。修改输出内容,再运行查看结果,可以发现:当输出位对应为1时,灯灭;输出为0时,灯亮。 下面,我们来分析一下以下这段程序的作用。

北邮通信原理软件实验报告XXXX27页

通信原理软件实验报告 学院:信息与通信工程学院 班级: 一、通信原理Matlab仿真实验 实验八 一、实验内容 假设基带信号为m(t)=sin(2000*pi*t)+2cos(1000*pi*t),载波频率为20kHz,请仿真出AM、DSB-SC、SSB信号,观察已调信号的波形和频谱。 二、实验原理 1、具有离散大载波的双边带幅度调制信号AM 该幅度调制是由DSB-SC AM信号加上离散的大载波分量得到,其表达式及时间波形图为: 应当注意的是,m(t)的绝对值必须小于等于1,否则会出现下图的过调制: AM信号的频谱特性如下图所示: 由图可以发现,AM信号的频谱是双边带抑制载波调幅信号的频谱加上离散的大载波分量。 2、双边带抑制载波调幅(DSB—SC AM)信号的产生 双边带抑制载波调幅信号s(t)是利用均值为0的模拟基带信号m(t)和正弦载波 c(t)相乘得到,如图所示: m(t)和正弦载波s(t)的信号波形如图所示:

若调制信号m(t)是确定的,其相应的傅立叶频谱为M(f),载波信号c(t)的傅立叶频谱是C(f),调制信号s(t)的傅立叶频谱S(f)由M(f)和C(f)相卷积得到,因此经过调制之后,基带信号的频谱被搬移到了载频fc处,若模拟基带信号带宽为W,则调制信号带宽为2W,并且频谱中不含有离散的载频分量,只是由于模拟基带信号的频谱成分中不含离散的直流分量。 3、单边带条幅SSB信号 双边带抑制载波调幅信号要求信道带宽B=2W, 其中W是模拟基带信号带宽。从信息论关点开看,此双边带是有剩余度的,因而只要利用双边带中的任一边带来传输,仍能在接收机解调出原基带信号,这样可减少传送已调信号的信道带宽。 单边带条幅SSB AM信号的其表达式: 或 其频谱图为: 三、仿真设计 1、流程图:

微原实验报告8253

华北电力大学 实验报告 | | 实验名称 8253应用 课程名称微机原理及应用 | | 专业班级:自动化1202 学生姓名:屈言雪 学号: 201202020222 成绩: 指导教师:程海燕实验日期: 2014/12/16

一、实验目的及要求: 实验目的:(1) 学习可编程定时/计数器8253的工作原理及工作方式; (2)掌握使用8253的应用编程方法,并设计出相应电路在实验箱上正确连接; (3)熟练掌握WAVE6000实验系统的使用 实验要求:1、基本要求:利用8253输出周期为1秒的方波。 2、在8259的IR2端输入中断请求信号,该信号由8253的方波信号产生(频率 1Hz)。每来一个上升沿,申请中断一次,CPU响应后通过输出接口74LS273使发 光二极管亮,第1次中断,LED0亮,第2次中断,LED1亮,…… 第8次中断, LED7亮,中断8次后结束。 二、实验设备 1.计算机 https://www.doczj.com/doc/d113590363.html,b6000微机实验箱 3.导线若干 三、实验内容 1、基本要求:利用8253输出周期为1秒的方波。 2、在8259的IR2端输入中断请求信号,该信号由8253的方波信号产生(频率1Hz)。每来 一个上升沿,申请中断一次,CPU响应后通过输出接口74LS273使发光二极管亮,第1次中断,LED0亮,第2次中断,LED1亮,…… 第8次中断,LED7亮,中断8次后结束。 四、实验步骤 1、Proteus中的设计: (1)连接好8086与74LS373,如图:

(2)设置38译码器译码:根据74LS273地址为8000H,知A15-A0只有A15为1、其余全为0时,即Y0有效时选中273;8259的地址为9000H,Y1有效时选中8259;8253的地址为A000H,Y2有效时选中8253;将38译码器的A、B、C端口分别接地址A12、A13、A14, 使能端E1接A15,E2、E3都接地,如图:

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