微机原理实验指导书

微机原理实验指导书
微机原理实验指导书

微型计算机原理与应用实验指导书

上海大学通信学院

2010 年4 月

PC微机原理实验一

一、目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的

功能。

要求:在PC机上完成下列程序的调试运行,并写出运行结果。二、1.DEBUG的基本操作:(详细内容请参阅教材“程序的调试,P173”和“附录F

调试程序DEUBG的使用,P499”)

(1)从WINDOWS进入DOS之后,输入命令启动DEBUG:

C:>DEBUG 回车

(2)输入R命令,查看和记录CPU各个寄存器的内容:

-R回车

看到什么

(3)输入A命令,汇编下面的字符“WINDOWS”显示程序:

-A100 ;从偏移地址是0100H处开始写指令

MOV AH,2

MOV DL, 57 ;57H 是“W ”的ASCII码

INT 21 ;INT 21是DOS 功能调用,AH=2代表2号功能

;这3句合起来的功能是:显示DL中的字符

MOV DL, 49

INT 2 1

MOV DL, 4E

INT 21

MOV DL, 44

INT 2 1

MOV DL, 4F

INT 2 1

MOV DL, 57

INT 2 1

MOV DL, 53

INT 2 1

INT 3 ;功能是产生一个断点,不要省略

(4)输入U 命令反汇编上面的程序:

-U 100

问:这里100代表什么

(5)输入G命令连续运行上面的程序,记录运行结果:

-G=100

,57,53依次分别改为574F4E57 (6)输入E命令把上面程序中的数据,49,,44,,45:,,45,4C43,4F4D,-E 103 回车(以下同)

-E 107

10B-E

-E 10F

113-E

117-E

11B-E

(7)输入D命令查看程序机器码的存放情况:

-D 100 11E ;看从100开始到11E的机器码

(8)输入G命令再连续运行程序,并记录运行结果:

-G=100

(9)依次输入下面的T命令(单步执行)和G命令(设置断点并启动运行),记录各

命令的运行结果:

-T=100 回车

-G=100 106 回车

-G=100 10A 回车

-G=100 10E 回车

-G=100 11E 回车

注意:

下面第2—第8段程序是7个实用的小程序,若不小心打错指令,可以这样修改:

例如:CS:0100 B300 MOV BL,0

0102 53 PUSH BX

0103 B220 LP1: MOV DL,20

要修改“PUSH BX”,因为这条指令的IP是0102,所以按以下操作:

-A 0102 回车,然后把正确的指令打入,“-A ”是汇编指令。

如果要查看0100以后的指令及相应的机器代码,可以

-U 0100 回车,能够看到CS:0100开始的指令及相应的机器代码。“-U ”是反汇编

若发现有误用,用“-A XXXX 回车”,重打这条指令即可

2.编制一个能在CRT上连续显示A,B,C,D······Z大写英文字符的源程序,并在源程序下汇编调试机运行。

参考源程序(DEBUG调试环境中,源程序的十六进制数后面不写H):

CS:0100 B300 MOV BL,0

0102 53 PUSH BX

0103 B220 LP1: MOV DL,20

0105 B402 MOV AH,02

0107 CD21 INT 21

BXPOP 5B 0109

010A 88D8 MOV AL,BL

ALFEC0 010C INC

CMP AL,1B3C1B 010E

JNZ 0110 LP2(0114) ;不能写LP2,应写7502

01140112 B001

MOV AL,01

LP2: 88C3 MOV BL,AL0114

0116 53 PUSH BX ;

ADD AL,40 0440 0117

88C2 0119 MOV DL,AL

B402 MOV AH,02 011B

011D CD21 21 INT

MOV 011F B 9FFFF CX,FFFF DEC CXDL:

0122 49

0123 75FD JNZ DL(0122);不能写DL,应写0122

0125 EBDC JMP LP1(0103);

按CTRL+C,可中止程序运行。

运行正确后,改写程序为0,1,2,3,4,5,7,8,9的循环显示。

3.编制一个3字节压缩BCD加法源程序

若要实现123456+456789,根据低地址放低字节,高地址放高字节原则,请用E命令在DS:1000-1002单元正确存放被加数123456,在DS:1010-1012单元正确存放加数456789。

参考程序如下:

CS:0200 BE0010 MOV SI,1000

0203 BF1010 MOV DI,1010

0206 BB2010 MOV BX,1020

0209 B103 MOV CL,3

020B B500 MOV CH,0

020D F8 CLC

020E8A04 MAD: MOV AL,[SI]

0210 1205 ADC AL,[DI]

0212 27 DAA

0213 8807 MOV [BX],AL

0215 46 INC SI

0216 47 INC DI

0217 43 INC BX

0218 E2F4 LOOP MAD(020E)

021A F4 HLT

运行结果:

[1020]=______ [1021]=______ [1022]=______ SI=______ DI=______ BX=_____

相加后结果是:_________________

F标志:O=______ S=______ Z=______ A=______ P=______ C=______

注意:按CRT的实际显示填写。(参考书P502)

结果会如何DAA的作用,如果没有DAA思考:

4.一字节十六进制数转换为ASCII码(只考虑大写字母)

用E命令在DS:1000单元中存放十六进制数5A

调试运行下面程序:

CS:0300 8D360010 LEA SI,[1000]

0304 8D3E2010 LEA DI,[1020]

0308 8A04 MOV AL,[SI]

030A 240F MOV BL,AL

030C 240F AND AL,0F

030E E80E00 CALL CHANG(031F)

0311 80E30 AND BL,F0

0314 B90400 MOV CX,4

0317 D2EB SHR BL,CL

0319 88D8 MOV AL,BL

031B E80100 CALL CHANG(031F)

031E F4 HLT

031F 3C09 CHANG: CMP AL,09

0321 7602 JBE AD30(0325)

0323 0407 ADD AL,07

0325 0430 AD30: ADD AL,30

0327 8805 MOV [DI],AL

0329 47 INC DI

032A C3 RET

运行结果:[1020]=______ [1021]=______

思考:NOP 是空操作指令,若在ADD AL,07后面,加一条NOP,结果会如何

5、搜索字符串结束标志,统计搜索的字符个数

用E命令在DS:1000开始的单元中存放若干个ASCII字符,如:30,31,32……39,0D。(0D 作为字符串结束标志),

调试运行下面程序

CS: 0100 8D3E0010 LEA DI,[1000]

0104 B200 MOV DL,0

0106 B00D MOV AL,0D

0108 AE AGAIN: SCASB ;书P150,AL减去[DI],INC DI

0109 7404 JE DONE(010F)

010B FEC2 INC DL

010D EBF9 JMP AGAIN(0108)

010F 8D1E2010 DONE: LEA BX,[1020]

0113 8817 MOV [BX],DL

0115 F4 HLT

运行结果:

___________单元,该单元的值是___________搜索的字符个数存放在.

AL=__________ BX=__________ DL=__________

思考:把SCASB换成通用指令,如何改

6、编制一个将N个带符号的正、负数分开的源程序。

设N=10,用E命令在DS:1000-1009单元存放10个数(1字节):

01,02,03,04,06,FF,80,81,06,07

将该数据块正、负数分开,正数放在1010为首地址的单元中,负数放在1020为首地址的单元中。

参考程序:

CS: 0300 BE0010 MOV SI,1000

0303 BF1010 MOV DI,1010

0306 BB2010 MOV BX,1020

0309 B90A00 MOV CX,000A

030C AC G1: LODSB ;书P150,[SI]送给AL;INC SI

AL,80020D A880 TEST

MINUS(0314) JNZ 030F 7503

;INC DI,AL送给[DI];书P1500311 AA STOSB

JMP AGAIN(0319)0312 EB05

BX, DI0314 887DF MINUS: XCHG

STOSBAA 0316

BX, DI87DF XCHG 0317

CX49 AGAIN: DEC 0319

G1(030C) JNZ 030A 75F0

HLT 031C F4

运行结果:[1014]=_____ [1013]=_____ [1010]=_______ [1011]=______ [1012]=______ [1022]=_____ [1021]=_____ [1015]=_______ [1016]=______ [1020]=______

),程序能更简洁吗思考:二条XCHG作用是什么如果不用STOSB(功能见书P150

个ASCII字符进行偶校验的源程序。7、编制一个将N ASCII字符单元放1000—10078个设N=8,用E命令在DS:,44,42,4341 31,32,33,34,参考程序:SI,[1000] LEA CS: 0400 8D360010

BX,[1010] LEA 0404 8D1E1010

CX,8 MOV 0408 B90800

AGAIN: LODSB 040B AC

AND AL,AL 040C 20C0

NEXT(0417) JPE 7A07 040E

AL,80 OR 0410 0C80

MOV [BX],AL 0412 8807

BX INC 0414 43

LP1(041A) EB03 0415 JMP

[BX],ALMOV NEXT: 8807 0417

0419 43 INC BX

DEC 041A LP1: 49 CX

AGAIN(040B) 041B JNZ 75EE

HLT F4 041D

运行结果:

1000—1007单元内容:___________________________________________

1010—1017单元内容:___________________________________________

改上述程序进行奇校验,写出运行结果:

1000—1007单元内容:___________________________________________

1010—1017单元内容:___________________________________________

8、找出无序的有符号数中的最小值和最大值

用E命令在DS:1000—100A中存放11个数:0A,80,84,82,83,81,01,02,05,04,03,其中0A为数列的个数。

调试运行下面程序:

CS: 0200 8D1E0010 LEA BX,[1000]

0204 8D361010 LEA SI,[1010]

0208 8D3E2010 LEA DI,[1020]

020C B500 MOV CH,0

020E8A0F MOV CL,[BX]

0210 49 DEC CX,

0211 43 INC BX

0212 8A07 MOV AL,[BX]

0214 8804 MOV [SI],AL

0216 8805 MOV [DI],AL

0218 43 INC BX

0219 8A07 AGAIN: MOV AL,[BX]

021B 3A04 CMP AL,[SI]

021D 740C JE NEXT(022B)

021F 7F04 JG GET(0225)

0221 8804 MOV [SI],AL

0223 EB06 JMP NEXT(022B)

0225 3A05 GET: CMP AL,[DI]

0227 7C02 JL NEXT(022B)

0229 8805 MOV [DI],AL

022B 43 NEXT: INC BX

022C 49 DEC CX

022D 75EA JNZ AGAIN(0219)

022F F4 HLT

运行结果:

[1010]=____________ [1020]=____________

若求无符号数中的最小值和最大值,请修改并调试运行程序。

PC 微机原理实验二

目的:掌握8088汇编语言程序的编辑、宏汇编、连接及运行的操作步骤,进一步掌一、握编制源程序的格式,了解编辑程序EDIT、宏汇编MASM、联机程序LINK的功能,熟悉具有扩展名.ASM、.OBJ、.LST、.EXE等文件查询。

要求:在DOS环境下,用EDIT文件编辑***.ASM源程序并存盘,用MASM二、文件汇编无误,用LINK文件连接无误,然后在DOS下运行***.EXE文件,用DEBUG文件检查运行结果。最后写出程序运行结果。

运行以下程序()后,检测结果是否按从小到大的次序(ASCII码值)。排序算法可以参考教科书P114 例4.3.10。

显示一串字符可以参考教科书P146例4.3.19。

例如要显示BUF1中的字符,可以这样写:

MOV DX,OFFSET BUF1

MOV AH,9

INT 21H ;(AH)=9 显示一串字符,首地址:DS:DX(书P146)

源程序如下:

NAME:

STACK SEGMENT STACK

DW 256 DUP()

TOP LABEL WORD

STACK ENDS

DATA SEGMENT

BUF1 DB 43H,47H,46H,41H,42H,30H,31H,32H,33H,34H,'$'

BUF2 DB 0DH,0AH,'$' ;使光标回车换行(参书P147)

DATA ENDS

CODE SEGMENT

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

START: MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV SP,OFFSET TOP ;前几句几乎是固定格式

MOV DX,OFFSET BUF1

MOV AH,9

INT 21H ; 显示BUF1中未排序的原始数据

MOV DX,OFFSET BUF2

MOV AH,9

INT 21H ; 使光标回车换行(参考书P147)

;因为BUF1 MOV CX, 10 是10个字节

;下面是排序算法的主体部分; SI指向DATBUF最后一单元加MOV SI,CX 1 ; BL中置标志BL,0FFH 0FFH MOV

; (BL)不为LOOPA:CMP BL,0FFH 0FFH则转DONE

DONEJNZ

MOV BL,00

DEC CX ;外循环修正CX

DONEJZ

; SI, CX---堆栈SI PUSH

; PUSH CX

LOOPB: DEC SI ; 内循环修正指针

MOV AL,[SI]

CMP AL,[SI-1]

JAE LA

XCHG AL,[SI-1]

MOV [SI],AL

MOV BL,0FFH

LA: LOOP LOOPB

POP CX

POP SI

JMP LOOPA

DONE: MOV DX,OFFSET BUF1 ;

MOV AH,9 ;

INT 21H ; 显示BUF1中已经排序的有序数据

MOV CX,LENGTH DATBUF

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

MOV AH,4CH

INT 21H ;返回DOS

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

CODE ENDS

END START

思考:

(1)如果要求程序执行后,显示

Please enter string:

142AFC7 回车;(当场输入原始数据)

1247ACF ;(排序后的结果)

该如何修改程序

(2)实验一的第3题“编制一个3字节压缩BCD加法源程序”改写成标准汇编

例如,至少写成这样:A+B=C

INPUT A = ;输入被加数

;输入加数INPUT B =

RESULT = ;计算的和

提示:显示程序可以参考书P146

PC微机原理实验三

机发声程序)PC(一. 目的:了解8254定时器、8255可编程外围接口芯片的工作原理,掌握对这些芯片的编程方法

二. 要求:根据参考例子,自己编写一个简单的曲子。

注:可以参考书P400“扬声器驱动原理逻辑图”

PC机上的大多数输入/输出(I/O)都是由8255可编程序外围接口芯片管理的。它包括三个8位寄存器,两个用于输入功能,一个用于输出功能。输入寄存器分配的I/O端口号为60H和62H,输出寄存器分配的I/O端口号为61H。输出寄存器中的两位来选择扬声器的驱动方式,当输出寄存器(I/O端口6 1H)的第0位为l时,控制8254定时器来驱动扬声器,当第l位为l时,扬声器的门电路接通,并一直保持到位1变为0时关闭。连接到扬声器上的是8254的2号定时器,它实际上是一个振荡电路,此电路向扬声器发送指定频率的脉冲,当输出端口61H控制扬声器为接通状态时,就发出了一定频率的声音。

PC机内的R0M BIOS中有个BEEP子程序,它能根据BL中给出的时间计数值控制8254定时器,产生持续时间为1个或几个0.5秒,频率为896Hz的声音,这个子程序的用途是当“加电自测系统发现硬件错误后,由ERROR—BEEP处理程序调用BEEP子程序,使扬声器发出“嘟嘟''的信号。BL中的时间计数值由ERROR—BEEP程序设置为533H,BEEP子程序将此计数值送给8254的定时器2来产生896Hz的声音,然后BEEP又将AL的第0位和第l位置1,并把AL的值送到8255的输出寄存器(1/O端口61H),使扬声器接通发出声音。

实际上BEEP是一个很好的通用发声程序,我们可以利用并修改BEEP,使其产生任一频

率的声音。为此我们需要做两点修改,首先,BEEP程序只能产生896Hz的声音,我们的通用发声程序应能产生任一频率的声音。其次,BEEP产生声音的持续时间(音长)只能是0.5秒的倍数,我们希望声音的持续时间易于调整,例如可以是l0ms的倍数。

我们知道BEEP是将计数值533H送给定时器2产生896Hz的声音的,那么产生其它频率

声音的时间计数值应为:.

533H×896÷给定频率=l23280H÷给定频率

假定发声的频率存放在D1寄存器中,下面的指令在AX中得到送往定时器.2的计数值:MOV DX,l2H

MOV AX,533H*896

DⅣDI

10ms的延迟时间可以简单地通过执行循环指令取得:

WAIT:MOV CX.2801

LOOP DELAY :DELAY.

注意:这个时间是在老的8086上运行的时间,现代“奔腾”要快得多,必须调整!

如果要产生与l0ms成倍数的延迟时间,可在BX寄存器中放入倍数。例如要产生l秒的持续时间,则在BX中放入100,以控制LOOP指令执行100×2801次,也就是1 0ms的100倍。指令

如下:

MOV BX,100

WAIT:MOV CX,2801

DELAY:LOOP DELAY

DEC BX

JNZ WAIT

这样我们就能在修改后的BEEP程序的基础上编写一个任一频率(由Dl指定)和任一持续时

间(由CX和BX指定)的通用发声程序。它包括三个步骤:

1.在2号定时器中的43端口送一个特定的数OB6H(1 0 11 0 1l OB),此数对定时器的方式寄存器进行初始化,使定时器2准备接收计时常数。

2.在2号定时器中的4 2H端口装入一个l 6位的计时常数(533H×896/频率),以建立将要产生的声音频率。

3.把输出端口61H的0、1两位置1,发出声音。

下面举例说明8253计数器2产生一定频率的方波并送至扬声器发音的程序

例:欲使8253的计数器2产生600 Hz的方波,经滤波后送至扬声器发音,当按下任一键时声音停止。试编写此程序。8253的端口地址为40H~43H,8255A的端口地址为60H~63H。.解:

计数器2的时钟输入:T2=t/f2=t/1.19 MHz≈840 ns

方波发生器OUT2的输出周期为:1/600 Hz≈ms

计数器2方波发生器的计数初值为:ms/840 ns≈l983

利用上述办法,编制的源程序如下。

STACK SEGMENT PARA STACK ‘STACK '

DB 256 DUP(0)

STACK ENDS

DATA SEGMENT PARA PUBLIC ‘DATA'

FRED DW l983 ;1.19 MHz/600 Hz=1983为计数值

DATA ENDS

CODE SEGMENT PARA PUBLIC ‘CODE'

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

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

START PROC FAR

PUSH DS

MOV AX,0 ;为正确返回DOS保存地址

PUSH AX

MOV AX,DATA

MOV DS,AX ;设置DS指向DATA数据段

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

口当前状态PB;读61H ,Al IN

0R Al,03H ;使PB1 PB0均为1

OUT 6lH,AL ;输出PB口以使扬声器发声

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

MOV AL,8 ;控制字D7D6=l0选择计数器2,D5D4=11先写低8位

;再写高8位,D3D2D1=011工作在方式3(方波发生器),

;D0=0二进制计数

OUT 43H,AL ;命令写入8253控制寄存器

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

MOV BX,FRED ;设分频计数值(1983)

MOV Al,BL ;先写低位字节

OUT 42H,AL

MOV AL,BH ;再写高位字节

OUT 42H,AL

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

MOV AH,0 ;INT l6H的功能号0调用是从键盘读入字符,出口是AL中为

;键盘输入字符的ASCIl码(见BIOS中断调用)。

INT l6H

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

PB口的当前状态;读AL,61H IN

。均为O,、PB,B ;使PBALAND

;扬声器停止工作.OUT 61HAL

;-----------------------------------------------------------;结束,返回DOS RET

START ENDP

乐曲程序

利用通用发声程序,可以编写演奏乐曲的程序。乐曲是按照一定的高低、长短和强弱关系组成的音调,在一首乐曲中,每个音符的音高和音长与频率和节拍有关

组成乐曲的每个音符的频率值和持续时间是乐曲程序发声所需要的两个数据。音符的频率可以,音符的持续时间根据乐曲的速度及每个音符的节拍数来确定。在4/4(四四拍)中,四分音符为一拍,每小节4拍,全音符持续4拍,二分音符持续2拍,四分音符持续l拍,八分音符持续半拍等。如果我们给全音符分配1秒的时间,则二分音符的持续时间为0.5秒(50 X1 0ms),四分音

符的持续时间为O.25秒(25×1 0ms),八分音符的持续时间为0.1 25秒(1 2.5×1 0ms)。

知道了音调与频率和时间的关系,我们就可以按照乐曲的曲谱将每个音符的频率和持续时间定义成两个数据表,然后编写程序依次取出表中的频率值和时间值,调用通用发音程序发出各种声音。

编写乐曲程序可分为四个步骤:

1.为演奏的乐曲定义一个频率表(FREQ)和一个节拍时间表(TIME),例如:

FREQ DW 330,294,262,294,3 DUP(330) ;1,2小节

DW 294,294,294,330,392,392 ;3,4小节

DW 330,294,262,294,4 DUP(330) ;5,6小节

是结束符0FFFFH小节,其中8,7;0FFFFH ,262,294,330,294,DW 294.

TIME DW 6 DUP(25),50 ;l,2小节

Dw 2 DUP(25,25,50) ;3,4小节

DW l2 DUP(25),1 00 ;5—8小节

2.分别将两个表的偏移地址放入Sl和BP

LEA SI,FREQ

LEA BP,DS:TIME

3.从表中取出音符的频率放入DI,取出音符的持续时间放入BX

MOV DI,[SI]

MOV BX,DS:[BP]

4.调用通用发音子程序发出音调

下面是按某乐谱编写的一个演奏程序,同时在屏幕上显示字符。

调试程序,若调不通,请仔细检查和修改;调通后说明具体完成什么功能画出程序的流程框图。

dseg segment

freg dw 262, 294,330,349,392,440,494

times dw 7 dup(65535)

num db

num1 db 3

count db 7

mess db '**','$'

dseg ends

stack segment para stack 'stack'

dw 100 dup()

stack ends

cseg segment

assume cs:cseg,ds:dseg,ss:stack

main proc far

start: push ds

sub ax,ax

push ax

mov ax,dseg

mov ds,ax

mov es,ax

mov al,1ch

mov ah,35h

int 21h

push es

push bx

push ds

mov dx,offset musc

musc ax,seg mov

mov ds,ax

mov al,1ch

mov ah,25h

int 21h

pop ds

in al,21h

and al,0feh

out 21h,al

sti

mov cl,0

num,cl byte ptr mov cl,byte ptr lp1: mov num al,cl mov

inc al

al,1bh cmp

lp2 jnz

al,1mov

cl,al lp2: mov

byte ptr mov num,cl al,40hadd

dl,al mov

mov ah,2

21h int

dh,10 mov

lp4: mov cx,0

lp3: loop lp3

dec dh

lp4 jnz

num1ptr al,byte mov

al,0 xor

lp1jnz

dx pop

pop ds

al,1ch mov

ah,25hmov

21h int

in al,21h

al,1 or

out 21h,al

cli

ret main endp

near proc musc

push ds

push ax

push cx

mov ax,dseg

mov ds,ax

dec count

jnz exit

mov dx, offset mess

mov ah, 9

21h int

mov freg offset si,

mov bp, offset times

loop1:mov di,[si] cmp di,0 exit1je

mov bx,ds:[bp]

sound call

add si,2

bp,2add

loop1 jmp

exit1: mov byte ptr count,7

num1 byte ptr dec

sti exit:

dx pop

pop cx

pop ax

pop ds iret

musc endp

near sound proc

push ax

bx push

push cx

dxpush

di push

mov al,0b2h 43h,al out

dx,12h mov

mov ax,3280h

div di

out 42h,al

al,ah mov

out 42h,al

in al,61h

mov ah,al

or al,3

out 61h,al

delay: mov cx,20000

loop2: loop loop2

jne delay

mov al,ah

out 61h,al

pop ax

pop bx

pop cx

pop dx

pop di

ret

sound endp

cseg ends

end main

PC微机原理实验四

双机通信(设计性实验)

一、目的:了解两个RS-232C接口各引脚的定义及相互连结,掌握异步通信的帧格式及8052串行接口芯片的初始化编程,掌握查询方式双机通信一般的编程方式。

二.要求:独立设计接收()和发送()程序

(可以参考书P423)

注意:

(1) 运行文件之前,要检查通信连线是否连结好。

(2)两机同时运行程序时,一方键入的字符,会在对方的屏幕上显示出来,特别要注意两机不能同时按键,即一方发送时,另一方只能接收。

(3)若要在单机上实现串行通信,不考虑连线,只需把13H写入MODEM控制寄存器(3FCH),由8250回送,要求键盘输入的字符与显示的字符差“1”,例如:键入“1”

应显示“2”;键入“A”,应显示“B”。

方式接法(参考书P416图)三、零MODEM微机(乙)微机(甲)

TX------------------------RXTX、RX交叉相连;RX------------------------TX

RTS-----------------------CTS

CTS---------------------- RTS ;RTS、CTS交叉相连

DSR---------------------- DTR

DTR---------------------- DSR ;DTR、DSR交叉相连GND----------------------GND ;别忘记连GND

以下是段定义(自己设计编写):

以下是程序的主题部分(按提示要求设计编写):

;指向线路控制寄存器

;设置波特率

;波特率为1200

;建立数据格式

;指向MODEM控制寄存器

;双机通信(单机通信该如何)

;指向中断允许寄存器

;禁止所有中断

;指向线路状态寄存器

;读状态

;检测错误

;有错转移

;接收数据就绪

;是,转接收

;否,发送寄存器空;不空,循环等待;检测键盘输入

;无,循环等待

;有,读键盘输入

;是ESC键

;是,返回DOS

;指向数据寄存器;发送字符

;取接收字符

;取ASCII码

;显示字符

;是回车键

;否,继续下一个;是,换行

;出错处理.

微机原理实验指导书

微机原理及应用实验指导书 南京理工大学机械工程学院 2011年10月10日

实验1 基本操作实验 1. 实验目的 (1) 掌握TD-PITC 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 (2) 掌握使用运算类指令编程及调试方法; (3) 掌握运算类指令对各状态标志位的影响及其测试方法; (4) 学习使用软件监视变量的方法。 2. 实验设备 PC机一台,TD-PITC 实验装置一套。 3. 实验内容及步骤 通过对样例程序的操作,学会在TD-PITC境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会: ●如何设置断点; ●如何单步运行程序; ●如何连续运行程序; ●怎样查看寄存器的内容; ●怎样修改寄存器的内容; ●怎样查看存储器的内容; ●怎样修改存储器的内容。 3.1 实验内容1――――BCD码转换为二进制数 实验内容: 将四个二位十进制数的BCD 码存放于3500H 起始的内存单元中,将转换的二进制数存入3510H 起始的内存单元中,自行绘制流程图并编写程序。 参考实验程序清单如下: SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: XOR AX, AX MOV CX, 0004H MOV SI, 3500H MOV DI, 3510H A1: MOV AL, [SI] ADD AL, AL MOV BL, AL

ADD AL, AL ADD AL, AL ADD AL, BL INC SI ADD AL, [SI] MOV [DI], AL INC SI INC DI LOOP A1 A2: JMP A2 CODE ENDS END START 实验步骤: 1)运行Wmd86 软件,进入Wmd86 集成开发环境。 2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1 语言环境选择界面 3)语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-2所示。默认文件名为Wmd861。 图1-2 新建文件界面 4)编写实验程序,如图1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

微机原理及应用实验(题目)

微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。二、实验内容 在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的 30H~7FH 单元清零。 三、实验设备 PC机一台。 四、实验步骤 用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。五、实验思考 1.如果需把30H-7FH 的内容改为55H,如何修改程序? 2.如何把128B的用户RAM全部清零? 六、程序清单 文件名称:CLEAR.ASM ORG 0000H CLEAR: MOV R0,#30H ;30H 送R0寄存器 MOV R6,#50H ;50H 送R6寄存器(用作计数器) CLR1: MOV A,#00H ;00 送累加器A MOV @R0,A ;00 送到30H-7FH 单元 INC R0 ;R0 加1 DJNZ R6,CLR1 ;不到50H个字节,继续 WAIT: LJMP WAIT END 实验二数据传送 一、实验目的 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、实验设备 PC机一台。

微机原理实验指导

微机原理实验一简单I/O口扩展实验 一、实验目的 1. 熟悉74LS273、74LS244的应用接口方法。 2. 掌握用锁存器、三态门扩展简单并行输入输出口的方法。 二、实验内容 用逻辑电平开关作为74LS244(U10)的输入,用发光二极管作为74LS273的输 出,编写程序,使得逻辑电平开关的输入状态从发光二极管上显示出来。 三、实验器材 微机、EL型微机教学实验箱 四、实验原理图 4LS273 4 4LS02 S O S I C S U 1 R K1-K8是开关的输出插孔,L1-L8是发光二极管的输入插孔,SI0-SI7是74LS244 的输入插孔,SO0-SO7是74LS273的输出插孔,CSU10\是74LS244的地址译码输入插孔,CSU8\是74LS273译码输入插孔,以上插孔实验时均需连线,原理图中其它已注的和未标注的引脚均以连好或实验不需要。 74LS244

五、实验步骤 1.连线:将74LS244的输入SI0-SI7分别与逻辑电平开关电路的 K1-K8相连,从I/O地址片选信号 CS0\~CS7\中任选一个与 U10的片选信号相连(例如CS0\)。将74LS273(U8或U9)的输出(CS0\~CS7\)分别与发光二极管电路的 L1~L8相连,从I/O地址片选信号CS0\~CS7\中任选一个与U8或U9的片选信号相连。(如CS1\)2.编辑程序,单步运行,调试程序 3.调试通过后,全速运行,观察实验结果 4.编写实验报告 六、编程提示 逻辑电平开关拨上时为5V,拨下时为0V,发光二极管输入‘1’为亮,‘0’为灭。从U10读入的数据后从输出口输出。 七、程序框图

微机原理及应用实验

实验报告1 实验项目名称:I/O地址译码;简单并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握I/O地址译码电路的工作原理,简单并行接口的工作原理及使用方法。 二、预备知识: 输入、输出接口的基本概念,接口芯片的(端口)地址分配原则,了解译码器工作原理及相应逻辑表达式,熟悉所用集成电路的引线位置及各引线用途;74LS245、74LS373的特性及作用。 三、实验内容245输入373输出 使用Protues仿真软件制作如下电路图,使用EMU8086编译软件编译源程序,生成可执行文件(nn . exe),在Protues仿真软件中加载程序并运行,分析结果。 编程实现:读8个开关的状态,根据输入信号控制8个发光二极管的亮灭。 图1-1 245输入373输出 四、程序清单

五、实验结果 六、结果分析 七、思考题: 1、如果用74LS373作输入接口,是否可行?说明原因;用74LS245作输出接口,是否可行?说明原因。

实验报告2 实验项目名称:可编程定时器/计数器;可编程并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握8253的基本工作原理和编程应用方法。掌握8255的工作原理及使用方法。 二、预备知识: 8253的结构、引脚、控制字,工作方式及各种方式的初始化编程及应用。 8255的内部结构、引脚、编程控制字,工作方式0、1、2的区别,各种方式的初始化编程及应用。 三、实验内容: ⑴8253输出方波 利用8253的通道0和通道1,设计产生频率为1Hz的方波。设通道0的输入时钟频率为2MHz,8253的端口地址为40H,42H,44H,46H。通道0的输入时钟周期0.5μs,其最大定时时间为:0.5μs×65536 = 32.768ms,要产生频率为1Hz(周期= 1s)的方波,利用;一个通道无法实现。可用多个通道级连的方法,将通道0的输出OUT0作通道1的输入时钟信号。设通道0工作在方式2(频率发生器),输出脉冲周期= 10 ms,则通道0的计数值为20000(16位二进制)。周期为4 ms的脉冲作通道1的输入时钟,要求输出端OUT1输出方波且周期为1s,则通道1工作在方式3(方波发生器),计数值为100(8位;二进制)。硬件连接如图2-1。

微机原理实验报告

汇编语言程序设计实验 一、实验内容 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

微机原理及接口技术习题解答与实验指导

第一部分学习指导与习题解答 (3) 第1章计算机基础 (3) 1.1 学习指导 (3) 1.2 单项选择题 (3) 1.3 判断题 (6) 1.4填空题 (6) 1.5 简答题 (7) 第2章微处理器 (9) 2.1 学习指导 (9) 2.2单项选择题 (11) 2.3判断题 (15) 2.4填空题 (17) 2.5 简答题 (19) 第3章80x86指令系统 (22) 3.1学习指导 (22) 3.2单项选择题 (23) 3.3 判断题 (29) 3.4 填空题 (30) 3.5 简答题、 (34) 3.6. 分析程序题 (40) 3.7 编程题 (43) 第四章 (45) 4.3 判断题 (52) 4.4 填空题 (54) 4.5 简答题 (64) 4.6 分析程序题 (76) 4.7 编程题 (85) 第5章半导体存储器及其接口技术 (118) 5.1 学习指导 (118) 5.2单项选择题 (118) 5.3判断题 (121) 5.4填空题 (122) 5.5简答题 (123) 5.6应用题 (126) 第6章微型计算机接口技术 (134) 6.1 学习指导 (134) 6.2单项选择题 (135) 6.3判断题 (138) 6.4填空题 (139) 6.4填空题 (141) 6.5简答题 (141) 第7章,简单接口电路设计 (148) 7.1 学习指导 (148) 7.2单项选择题 (149) 7.3判断题 (149) 7.5应用题 (150)

第8章可编程接口技术 (156) 8.1可编程计数器8253/8254 (156) 8.1.1学习指导 (156) 8.1.2单项选择题 (157) 8.1.3判断题 (159) 8.1.4填空题 (159) 8. 1 . 5 简答题 (160) 8.1.6 应用题 (160) 8.2 并行通信接口8255A (163) 8.2.1 学习指导 (163) 8.2.2 单选题 (163) 8.2.3 判断题 (164) 8.2.4 填空题 (165) 8.2.5应用题 (165) 8.3串行通信接口8250/8251 (170) 8.3.2 单项选择题 (172) 8.3.3判断题 (172) 8.4可编程中断控制器8259A (178) 8.4.1 学习指导 (178) 8.4.2单选题 (178) 8.4.3 判断题 (180) 8.4.4 填空题 (181) 8.4.5 简答题 (182) 8.4.6 应用题 (184) 第9章自检试卷 (187) 9.1 自检试题一 (187) 自检试题二 (192)

80x86微机原理与接口技术实验指导书

80x86微机原理与接口技术 实验指导书 长安大学信息工程学院电子信息与通信工程实验室

第1章 80X86 微机原理及其程序设计实验 本章主要介绍汇编语言程序设计,通过实验来学习80X86 的指令系统、寻址方式以及程序的设计方法,同时掌握联机软件的使用。 1.1 系统认识实验 1.1.1 实验目的 掌握TD-PITE 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 1.1.2 实验设备 PC机一台,TD-PITE 实验装置一套。 1.1.3 实验内容 编写实验程序,将00H~0FH 共16 个数写入内存3000H 开始的连续16 个存储单元中。 1.1.4 实验步骤 1. 运行Wmd86 软件,进入Wmd86 集成开发环境。 2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1-1 语言环境选择界面 3. 语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-1-2所示。默认文件名为Wmd861。 图1-1-2 新建文件界面 4. 编写实验程序,如图1-1-3所示,并保存,此时系统会提示输入新的文件名,输完后

点击保存。 图1-1-3 程序编辑界面 5. 点击,编译文件,若程序编译无误,则输出如图1-1-4所示的输出信息,然后再点击进行链接,链接无误输出如图1-1-5所示的输出信息。 图1-1-4 编译输出信息界面图1-1-5 链接输出信息界面 6. 连接PC与实验系统的通讯电缆,打开实验系统电源。 7. 编译、链接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。可以通过端口列表中的“端口测试”来检查通讯是否正常。点击下载程序。为编译、链 接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。起始运行语句下会有一条绿色的背景。如图1-1-6所示。

微机原理及应用实验报告81487

实 验 报 告 课 程 名 称 实 验 名 称 实 验 日 期 学 生 专 业 学 生 学 号 学 生 姓 名 教 师 姓 名 成 绩 南京理工大学机械工程学院 微机原理及应用 实验1 DEBUG 操作实验 实验2 汇编程序设计实验 实验3 8253定时/计数器实验 实验4 8255 并行接口实验 年 月 日 至 年 月 日

实验一DEBUG命令及其操作 一、实验目的 1.熟练掌握debug的常用命令,学会用debug来调试程序。 2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。 3.掌握各种寻址方法以及简单指令的执行过程。 二、实验要求 1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。 2.本实验要求在PC机上进行。 3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。三、实验内容 ●实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。 实验报告要求: 1.写出运行结果; 2.小结debug常用命令及使用体会 答:1.原文已给出(略) 2.a 汇编 d显示内存单元内容 e修改单元内存内容 g执行命令 t单步(或多步)调试 n指定文件路径文件名(含扩展名) u反汇编 r查看寄存器值及修改 l加载程序 w写盘命令 体会:提升学习热情和动手能力有助于理解代码执行过程 ●实验内容2 设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。 实验报告要求: 1.写出完成上述功能的程序段; 2.单步执行,并记录寄存器AX, BX及堆栈指针SP的值 答: A100 Mov ax,3000 ;ax:3000 bx:0000 sp:ffee Mov bx,5000 ;ax:3000 bx:5000 sp:ffee Push ax ;ax:3000 bx:5000 sp:ffec

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 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循环右移四位

微机原理实验指导

实验一 MASM For Windows 的使用及顺序程序设计 一、实验目的 1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。 2、熟悉masm for windows调试环境及DEBUG常用命令的使用 二、实验内容 1.DEBUG常用命令(U、R、D、E、F、T、G、Q)的操作使用 2.编程实现两个16位无符号数的加、减、乘、除运算。 有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。 三、实验设备 PC机一台、masm for windows 汇编语言集成环境 四、实验准备 1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。 2) 画出流程图。 3) 写出源程序。 4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。 五、实验步骤 1) 输入源程序。 2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。 六、学生实验报告的要求 1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。 2) 说明程序中各部分所用的算法。

3) 说明主要符号和所用到寄存器的功能。 4) 上机调试过程中遇到的问题是如何解决的。 5) 对调试源程序的结果进行分析。 4) 说明标志位CF、SF和OF的意义。 DEBUG的常用命令 1、R 显示或修改寄存器的内容命令格式:-R 2、 D 显示存储单元的内容命令格式:-D[地址1, 地址2] 3、E修改存储单元的内容 命令格式:-E[地址1, 地址2] 4、U反汇编 命令格式:-U[地址1, 地址2] 5、T单步执行 命令格式:-T 6、G连续执行 命令格式:-G[=起始地址, 结束地址] A小汇编 命令格式:-A 7、Q退出DEBUG,返回DOS 实验一源程序 EXAM1-2 .ASM DATA SEGMENT A D B 34H,18H,2 DUP(0),’$’ B DB 56H,83H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,A MOV BL,B ADD AL,BL

微机原理实验指导书

微机原理实验指导书汕头大学机电系摘录

实验一P1口实验及延时子程序设计 1.实验目的 利用单片机的P1口作为I/O口进行实验验证,掌握利用P1口作为输入口和输出口的编程方法,理解并掌握延时子程序的设计方法。 2.实验设备及器件 IBM PC机一台 DP-51PRO单片机综合仿真实验仪一台 3.实验内容 (1)编写一段程序,用P1口作为控制端口,使D1区的LED轮流点亮。 (2)编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED 亮,不按时LED灭)。 图 1 4.实验要求 学会使用单片机的P1口作I/O口。如果时间充裕,也可以考虑利用P3口作I/O口来做该实验。 5.实验步骤 ①用导线把A2区的J61接口与D1区的J52接口相连。原理如图1所示。 ②先编写一个延时程序。 ③将LED轮流点亮的程序编写完整并调试运行。 ④使用导线把A2区J61接口的P1.0~P1.6与D1区J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区J53的KEY1相连。原理如图3.2(b)所示。 ⑤编写P1.7控制LED的程序,并调试运行(按下K1看是否全亮)。 ⑥A2区J61接口P1.7与D1区J54的SW1相连,然后再运行程序,拨动开关SW1查看结果。

6.实验预习要求 阅读附录内容,理解实验的硬件结构。可以先把程序编好,然后在Keil C51环境下进行软件仿真。 7.实验参考程序 程序1: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP M ain ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main: MOV A,#0FFH CLR C MainLoop: CALL Delay RLC A MOV P1,A ;把A的值输出到P1口 SJMP MainLoop Delay: MOV R7, #0 ;延时 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop RET ; END 程序2: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP Main ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main:JB P1.7,SETLED ;按键没有按下时,跳转到SETLED CLRLED: CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP Main SETLED: SETB P1.0 SETB P1.1

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

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

2013微机原理实验指导书

微机原理实验报指导书 实验一数据传送实验 1.实验名称实验一数据传送实验 2.实验目的 1、掌握微型计算机汇编软件调试汇编源程序的基本操作; 2、熟悉传送指令、简单运算类指令来编写汇编语言源程序; 3、掌握调试过程及实验结果分析; 3.实验仪器 微型计算机一台 4.实验原理或内容 1.数据段从3500H单元开始建立0---15共16个数据区,程序中见此段存入 数据00H,01H,02H---0AH---0FH,运行之,检查并记录结果。 2.将内存3500H开始的共10个单元内容传送到3600H单元开始的数据区中,运行之,记录结果。 5.实验步骤 1.启动Masm for Windows 集成实验环境2009.6。显示如下: 2.输入源程序 在模板处将程序完成,其中模板中段名可以自己修改定义,没有涉及的段可省略不写。 输入汇编语言源程序后,保存程序(规定扩展名为.asm)

3.汇编 编译/汇编成目标文件,单击运行菜单下“编译成目标文件(obj)”,等待系统汇编,若有错误,修改再编译,直至无错误为止。

4.连接 生成可执行文件。单击运行菜单下“生成可执行文件(exe)”,等待系统对汇编生成的.obj文件进行连接,生成相应的可执行文件。若有错误,修改错误重复3和4操作,直至无错误为止。

5.在DEBUG调试环境下进行程序的调试 1、反汇编。u回车 -u0000回车 2、单步运行。-T=0000回车 -T回车 3、连续运行。G=起始偏移地址结束偏移地址 4、内存单元内容显示。-Dds:3500回车 5、内存单元内容的修改。-EDS:3500回车.键入修改后内容再空格 完成后回车 6、查看修改寄存器。-R回车 -R跟寄存器名,显示寄存器内容:后可跟修改内容 -R IP 可查看修改IP值 7、退出debuf。Q命令 6.数据与结果 将运行结果记录于此处

微机原理及应用 上机实验报告2 数据传送

课程名称:_________微机原理及应用___________指导老师:_____钟崴_______成绩:__________________ 实验名称:_________数据传送___________实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求(必填) 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容和原理(必填) 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、主要仪器设备(必填) PC机一台。 四、操作方法和实验步骤 逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、程序清单 1. ORG 0000H CLEAR MOV R0,#30H ;间接寻址 MOV A,#40H ;立即寻址 MOV @R0,A ;间接寻址 MOV A,30H ;直接寻址 MOV DPTR,#0100H ;间接寻址 MOV A,#36H MOVX @DPTR,A MOV R0,#50H ;立即寻址 MOV A,#10 MOVC A,@A+DPTR ;变址寻址 END

微机原理实验报告

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

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在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.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语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

微机原理与接口技术实验指导书1_[1]...

微机原理与接口技术实验指导书 编者:王亭岭 华北水利水电学院 电气学院自动化教研室 二零一二年三月

目录 实验一标志寄存器应用 (1) 实验二指令寻址方式练习 (4) 实验三分支结构程序设计 (6) 实验四循环结构程序设计 (7) 实验五子程序结构程序设计 (8) 实验六DOS系统功能调用程序设计 (10) 实验七BIOS中断调用程序设计 (12) 实验八定时器中断程序设计 (14)

实验一标志寄存器应用 一、实验目的与要求 1.掌握汇编程序的编译过程; 2.掌握8086的标志寄存器的特点。 二、实验内容 微型计算机(80x86系列)。 四、实验参考程序 DATA SEGMENT A DW 123 B DW 456 SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA START: MOV AX , DATA MOV DS , AX MOV AX , A SUB AX , B MOV SUM , AX MOV AH,4CH INT 21H CODE ENDS END START 五、实验步骤 步骤一、用鼠标单击开始菜单,单击运行。如下图所示:

步骤二、在运行窗口中键入cmd,回车进入命令提示符。如下图所示: 步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。如下图所示:1.C:\>D: 回车 2.D:\ >CD MASM 回车 3.D:\MASM>MASM SY1.ASM 回车 4.D:\MASM>LINK SY1.OBJ 回车

步骤四、在命令提示行中运行并调试汇编程序。如下图所示:1.D:\MASM>SY1.EXE 回车 2.D:\MASM>DEBUG SY1.EXE 回车 六、实验结论 1.程序运行后变量SUM的值是多少? 2.程序运行前后标志寄存器的各标志位有何变化? 3.分析实验结果及所遇到的问题,并说明解决的方法。

微机原理与应用实验报告

微机原理及应用实验报告 班级:机械1301班 :黄佳清 学号:0801130117 座位号: 中南大学机电工程学院

实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,DPTR MOVX R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;部存储器数据块赋值,搬运数据块到外部存储器,再搬运回部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光

2.在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元容 3.

微机原理实验报告

微机原理实验报告 计算机网络的设计是一个要求动手能力很强的一门实践课程,在课程设计期间我努力将自己以前所学的理论知识向实践方面转化,尽量做到理论与实践相结合,在课程设计期间能够遵守纪律规章,不迟到、早退,认真完成老师布置的任务,同时也发现了自己的许多不足之处。 在课程设计过程中,我一共完成了11个实验,分别是1.制作直通电缆和交叉UTP、2.交换机Console口和Telnet配置、3.交换机端口和常规配置、4.虚拟局域网VLAN配置、5.路由器Console口Telnet 配置方法和接口配置、6.路由器静态路由配置、7单臂路由配置、8.动态路由协议配置、9.PPP协议配置、10路由器访问控制表(ACL)、11.网络地址转换(NAT)。 在制作直通电缆和交换UTP的实验中,我起初不能完全按照要求来剪切电缆,导致连接不通,后来在同学的帮助下,终于将实验完成。 在做到单臂路由配置和动态路由协议配置的实验,由于自身的基础知识掌握不牢,忘掉了一些理论知识,在重新翻阅课本和老师的指导之下,也成功的完成了试验。 从抽象的理论回到了丰富的实践创造,细致的了解了计算机网络连接的的全过程,认真学习了各种配置方法,并掌握了利用虚拟环境配置

的方法,我利用此次难得的机会,努力完成实验,严格要求自己,认真学习计算机网络的基础理论,学习网络电缆的制作等知识,利用空余时间认真学习一些课本内容以外的相关知识,掌握了一些基本的实践技能。 课程设计是培养我们综合运用所学知识,发现、提出、分析、解决问题的一个过程,是对我们所学知识及综合能力的一次考察。随着科学技术日新月异的不断发展,计算机网络也在不断的变化发展当中,这就要求我们用相应的知识来武装自己,夯实基础,为将来走向工作岗位,贡献社会做好充分的准备。

微机原理实验指导书(学生)

昆明理工大学微机原理及程序设计 实验指导书 段绍米编 昆明理工大学信息工程与自动化学院 自动化系 2013年10月

微机原理实验实验要求及运行环境 1、实验要求与注意事项: 交纸质版实验报告,实验要求: 2、实验运行环境 在电脑中装ASM Masm for windows 集成实验环境2008。双击图标打开ASM MasM for windows 集成实验环境运行工作界面,输入实验程序代码,调试、改错、保存、运行、查看结果,进行记录。

运行结果显示:

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

四、程序清单 CRLF MACRO ;宏定义,宏名:CRLF MOV DL, 0DH ;把0DH给DL MOV AH, 02H ; 把02H给AH INT 21H ;系统功能调用——实现回车功能 MOV DL, 0AH ;把0AH给DL MOV AH, 02H ; 把02H给AH INT 21H ;系统功能调用——实现换行功能ENDM ;宏定义结束——本段实现回车换行功能 DATA SEGMENT;数据段定义,段名DATA DATA1 DB 33H, 39H, 31H, 37H, 34H;变量DATA1中装入加数 DATA2 DB 36H, 35H, 30H, 38H, 32H;变量DATA2中装入被加数 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 DA TA2 MOV BX, 05 CALL DISPL CRLF MOV SI, OFFSET DA TA1 MOV BX, 05 CALL DISPL CRLF MOV DI, OFFSET DATA2 CALL ADDA MOV SI, OFFSET DA TA1 MOV BX, 05 CALL DISPL CRLF MOV AX, 4C00H INT 21H DISPL PROC NEAR

相关文档
最新文档