当前位置:文档之家› 微型计算机原理与接口技术实验1

微型计算机原理与接口技术实验1

微型计算机原理与接口技术实验1
微型计算机原理与接口技术实验1

微型计算机原理与接口技术

实验讲义

目录

第一章实验环境及实验步骤简介 (3)

一 DOS环境下的汇编语言编程环境简介 (3)

二 Debug的使用简介 (8)

第二章实验内容 (17)

实验一算术运算编程实验 (17)

实验二逻辑运算与移位操作编程实验 (19)

实验三数据串传送和查表程序 (20)

实验四分支程序设计 (22)

实验五循环程序设计 (25)

实验六子程序设计 (29)

实验七数制编码转换编程实验 (34)

实验八字符及字符串的输入/输出编程实验(设计性实验) (38)

第三章综合性实验 (44)

实验九发声系统程序编程设计 (44)

实验十中断实验 (50)

附录一8086指令系统一览表 (56)

附录二 8086指令对标志位的影响 (63)

附录三 8086宏汇编常用伪指令表 (64)

附录四 ASCII码表 (66)

附录五 DOS系统功能调用(INT 21H) (67)

附录六 BIOS系统功能调用 (72)

附录七 Debug命令表 (75)

第一章实验环境及实验步骤简介

一、 DOS环境下的汇编语言编程环境简介

1. 汇编语言源程序的汇编过程

汇编语言源程序的汇编过程是利用汇编程序(MASM)对已编辑好的源程序文件(.ASM)进行汇编,将源程序文件中以ASCII码表示的助记符指令逐条翻译成机器码指令,并完成源程序中的伪指令所指出的各种操作,最后可以建立3个文件:扩展名为 .OBJ的目标文件、扩展名为 .LST 的列表文件和扩展名为 .CRF 的交叉索引文件。目标文件是必须建立的,它包含了程序中所有的机器码指令和伪指令指出的各种有关信息,但该文件中的操作数地址还不是内存的绝对地址,只是一个可浮动的相对地址。列表文件(.LST)中包含了源程序的全部信息(包括注释)和汇编后的目标程序,列表文件可以打印输出,可供调试检查用。交叉索引文件(.CRF)是用来了解源程序中各符号的定义和引用情况的。.LST和.CRF两个文件不是必须建立的,可有有无,可以通过汇编时的命令加以选择。

在对源程序文件(ASM文件)汇编时,汇编程序将对ASM文件进行两遍扫描,若程序文件中有语法错误,则结束汇编,汇编程序将指出源程序中存在的错误,这时应返回编辑环境修改源程序中的错误,再经过汇编,直到最后得到无错误的目标程序,即OBJ文件。因此,汇编程序的主要功能可以概括为以下三点:(1) 展开宏指令;(2) 检查源程序中的语法错误,并给出错误信息;(3) 产生目标程序文件(OBJ文件),并可给出列表文件(.LST文件)。

汇编程序是系统提供的用于汇编的系统软件,目前常用的汇编程序有Microsoft公司推出的宏汇编程MASM(MACRO ASSEMBLER)和BORLAND公司推出的TASM(TURBO ASSEMBLER)两种。Microsoft公司推出有宏汇编程序MASM和小汇编程序ASM两种,二者的区别在于:MASM有宏处理功能,而ASM没有宏处理功能,因此,MASM比ASM的功能强大,但MASM需要占据较大的内存空间,当内存空间较小时(如64 KB),只能使用ASM。

2. 目标程序的连接过程

汇编后产生的目标程序(OBJ文件)并不是可执行程序文件(EXE文件),还不能直接运行,它必须通过连接程序(LINK)连接成一个可执行程序后才能运行。连接程序进行连接时,其输入有两个部分:一个是目标文件(.OBJ),目标文件可以是一个也可以是多个,可以是汇编语言经汇编后产生的目标文件,也可以是高级语言(例如C语言)经编译后产生的目标文件;另一个是库文件(.LIB),库文件是系统中已经建立的,主要是为高级语言提供的。连接后输出两个文件,一是扩展名为 .EXE的可执行文件,另一个是扩展名

为 .MAP 的内存分配文件。.MAP文件是连接程序的列表文件,又称为连接映像(Link Map),它给出每个段在存储器中的分配情况,该文件可有可无。.EXE文件可以在操作系统下执行,还可以用DEBUG进行调试。

3.汇编语言程序设计上机过程举例

编写程序,判断一个年份是否是闰年。汇编语言程序设计上机过程如图1.1所示。

图1.1 汇编语言程序上机过程

(一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件)

例如,编写程序,判断一个年份是否是闰年的汇编语言源程序,可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:

C> EDIT ABC.ASM

进入EDIT的程序编辑画面时,输入汇编语言源程序如下:

DATA SEGMENT

INFON DB 0DH,0AH,'Please input a year: $'

Y DB 0DH,0AH,'This is a leap year! $'

N DB 0DH,0AH,'This is not a leap year! $'

W DW 0

BUF DB 8

DB ?

DB 8 DUP(?)

DATA ENDS

STACK SEGMENT 'stack'

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT

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

START: MOV AX,DATA

MOV DS,AX

LEA DX,INFON

MOV AH,9

INT 21H

LEA DX,BUF

MOV AH,10

INT 21H

MOV CL,[BUF+1]

XOR CH,CH

LEA DI,BUF+2

CALL DATACATE

CALL IFYEARS

JC A1

LEA DX,N

MOV AH,9

INT 21H

JMP EXIT

A1: LEA DX,Y

MOV AH,9

INT 21H

EXIT: MOV AH,4CH

INT 21H

DATACATE PROC NEAR

LEA SI,BUF+2

MOV BX,0

X3:

MOV AL,[SI]

SUB AL,30H

MOV AH,0

XCHG AX,BX

MOV DX,10D

MUL DX

XCHG AX,BX

ADD BX,AX

INC SI

LOOP X3

MOV W,BX

RET

DATACATE ENDP

IFYEARS PROC NEAR

PUSH BX

PUSH CX

PUSH DX

MOV AX,W

MOV CX,AX

MOV DX,0

MOV BX,4

DIV BX

CMP DX,0

JNZ LAB1

MOV AX,CX

MOV BX,100

DIV BX

CMP DX,0

JNZ LAB2

MOV AX,CX

MOV BX,400

DIV BX

CMP DX,0

JZ LAB2

LAB1: CLC

JMP LAB3

LAB2: STC

LAB3: POP DX

POP CX

POP BX

RET

IFYEARS ENDP

CODE ENDS

END START

(二)用汇编程序MASM将ASM文件汇编成目标程序文件(OBJ文件)

当源程序建立以后,仍以ABC.ASM程序为例,我们用汇编程序MASM对ABC.ASM源程序文件进行汇编,以便产生机器码的目标程序文件ABC.OBJ,其操作步骤如下:

C>MASM ABC

Microsoft (R) Macro Assembler Version 5.00

Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved.

Object filename [ABC.OBJ]:

Source listing [NUL.LST]:ABC

Cross-reference [NUL.CRF]:ABC

50674 + 450574 Bytes symbol space free

0 Warning Errors

0 Severe Errors

由此可知,汇编程序调入后,首先显示版本号,然后出现三个提示行。

第一个提示行为:Object filename [ABC.OBJ]:

这是询问目标程序文件名,方括号内为机器规定的默认的文件名,通常直接按回车键,表示采用默认的文件名(如上所示),这是我们汇编的主要目的。

第二个提示行为:Source listing [NUL.LST]:

这是询问是否建立列表文件。若不建立,直接回车;若要建立,可以输入文件名ABC再回车,表示要建立名为ABC的列表文件。列表文件中同时列出源程序和机器语言程序清单,并给出符号表,有利于程序调试。

第三个提示行为:Cross-reference [NUL.CRF]:

这是询问是否要建立交叉索引文件。若不建立,则直接回车;若要建立,可以输入文件名ABC,表示要建立ABC.CRF文件。由于.CRF是非文本文件,为了建立交叉索引文件,还必须调用CREF.EXE程序,即输入:

C>CREF ABC

Microsoft (R) Cross-Reference Utility Version 5.00

Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved.

listing [ABC.REF]:

17 Symbols

这时首先显示版本号,然后出现一个提示行:Listing [ABC.REF]:

这是询问交叉索引文件名。这时可用回车承认方括号内机器默认的文件名,如上所示。这样就建立了ABC.REF文件。其内容是用户定义的所有符号(包括变量),并给出每个符号定义所在的行号(附以#)以及引用的行号。如下是ABC.REF文件的内容:

Microsoft Cross-Reference Version 5.00 Sat Dec 01 18:49:42 2007

Symbol Cross-Reference (# definition, + modification) Cref-1

A1 . . . . . . . . . . . . . . . 42 47#

BUF. . . . . . . . . . . . . . . 15# 35 38 39 55

CODE . . . . . . . . . . . . . . 28# 29 111

DATA . . . . . . . . . . . . . . 1# 21 29 30

DATACATE . . . . . . . . . . . . 40 53# 80

EXIT . . . . . . . . . . . . . . 46 50#

IFYEARS. . . . . . . . . . . . . 41 82# 110

INFON. . . . . . . . . . . . . . 2# 32

LAB1 . . . . . . . . . . . . . . 92 103#

LAB2 . . . . . . . . . . . . . . 97 102 105#

LAB3 . . . . . . . . . . . . . . 104 106#

N. . . . . . . . . . . . . . . . 10# 43

STACK. . . . . . . . . . . . . . 22# 22 27 29

START. . . . . . . . . . . . . . 30# 112

W. . . . . . . . . . . . . . . . 14# 76+ 86

X3 . . . . . . . . . . . . . . . 60# 73

Y. . . . . . . . . . . . . . . . 6# 47

17 Symbols

调入汇编程序,当我们回答了上述各提示行的询问之后,汇编程序就对源程序进行汇编。若汇编过程中发现源程序有语法错误,则列出有错误的语句和错误的代码。错误分警告错误(Wraning Errors)和严重错误(Severe Errors)。警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数及行号、错误的性质等。这时,就要对错误进行分析,找出问题和原因,然后再调用编辑程序加以修改,修改后重新汇编,直到汇编后无错误为止。

(三)用连接程序LINK生成可执行程序文件(EXE文件)

经汇编后产生的二进制的目标程序文件(OBJ文件)并不是可执行程序文件(EXE文件),必须经连接以后,才能成为可执行文件。连接程序并不是专为汇编语言程序设计的。如果一个程序是由若干个模块组成的,也可通过连接程序LINK把它们连接在一起。这些模块可以是汇编程序产生的目标文件,也可以是高级语言编译程序产生的目标文件。

连接过程如下:

C>LINK ABC

Microsoft (R) Overlay Linker Version 3.60

Copyright (C) Microsoft Corp 1983-1987. All rights reserved.

Run File [ABC.EXE]:

List File [NUL.MAP]:ABC

Libraries [.LIB]:

在连接程序调入后,首先显示版本号,然后出现三个提示行。

第一个提示行为:Run File [ABC.EXE]:

这是询问要产生的可执行文件的文件名。一般直接回车采用方括号内规定的隐含文件名。

第二个提示行为:List File [NUL.MAP]:

这是询问是否要建立连接映象文件。若不建立,则直接回车;若要建立,则输入文件名再回车。如果要建立该文件,可以输入文件名ABC。

第三个提示行为:Libraries [.LIB]:

这是询问是否用到库文件。若无特殊需要,则直接回车即可。

上述提示行回答后,连接程序开始连接。若连接过程中有错,则显示错误信息,错误分析清楚后,要重新调入编辑程序进行修改,然后重新汇编,再经过连接,直至无错为止。连接以后,便产生了可执行程序文件(EXE文件)。

(四)程序的执行

当我们建立了可执行文件ABC.EXE后,就可直接在DOS下执行该程序:

C>ABC

根据程序提示,输入一个年份,计算机会输出是否闰年的结果。

二 Debug的使用简介

通过编辑、汇编和连接后的程序是可以执行的程序。但是,一个程序特别是比较复杂的程序不能保证没有一点错误。因此,在投入正式运行前必须进行调试,以检查程序的正确性。调试程序Debug就是用来调试汇编语言程序的一种工具。Debug的主要功能有显示和修改寄存器及内存单元的内容;按指定地址启动并运行程序;设置断点使程序分段运行,以便检查程序运行过程中的中间结果或确定程序出错的位置;反汇编被调试程序,它将一个可执行文件中的指令机器码反汇编成助记符指令并同时给出指令所在的内存地址;单条追踪或多条追踪被调试程序,它可以逐条指令执行或几条指令执行被调试程序,每执行一条(或几条)指令后,Debug程序将中断程序的运行并提供有关结果信息;汇编一段程序,在Debug的汇编命令下可以直接输入助记符指令,并将其汇编成可运行程序段。此外,Debug还可以将磁盘指定区的内容或一个文件装入到内存或将内存的信息写到磁盘上等等。

启动Debug程序:在C盘搜索得到DEBUG.EXE,然后双击,或在DOS状态下用下面的命令启动Debug程序:

DEBUG [路径文件名.扩展名]

Debug后面的文件名及路径是指被调试程序的文件名及路径,Debug后面的文件必须是程序的可执行文件,其扩展名可以是.EXE 或.COM。在此命令后,DOS将调试程序Debug调入内存,Debug接着将被调程序送入内存。比如:DEBUG 123.EXE

(一)调试程序Debug的主要命令如下:

(1)显示内存单元内容的命令D

格式(1):-D 地址

从指定地址开始,显示128个字节的内容,每一行的左边显示段内偏移地址,接着显示16个单元的内容,最右边区域则显示这一行的16个单元所对应的可显示的字符。若无可显示的字符,则用圆点(小数点)填充。

D命令中的地址可为段内偏移量,也可为段基址和段内偏移量两部分,中间用冒号隔开,如1680:0110,即指段基址为1680H,段内偏移量为0110H。Debug中所显示的数据均为十六进制数,且省去了后面的H 标志。

格式(2):-D 范围

将显示指定地址范围内的内存单元的内容,起始地址可由段基址及段内偏移量两个部分组成,中间用冒号“:”隔开,也可以只指出段内偏移量,而此时的段基址在DS中。这里所说的范围包含起始地址和结束地址。

比如–D DS:1000 1020

将显示数据段偏移地址为1000H到1020H的内容。

(2)修改内存单元内容的命令E

格式(1):-E 地址内容表

它的功能是用给定的内容表去代替所指定的内存单元的内容。

例如:

E DS:0110 41 ‘CLOSE’41

该命令执行后,将用列表中的7个字符填入从DS:0110 到DS:0116 的7个存储单元中。

格式(2):E 地址

它的功能是可以连续地逐个修改内存单元的内容。当屏幕上显示指定单元的地址和内容之后,可采取下列办法:

①若指定单元的内容需要修改,则将新的内容的十六进制数输入,再按空格键,修改便告完成,然后显示下一个存储单元的地址及内容,若需要修改,可进行同样的操作。若某一个单元的内容不需要修改,而操作又要进行下去,则可直接按空格键。

②若需要显示前一个单元的地址和内容,则输入连接号′-′,若要修改,则输入新的内容;若显示前一个单元的地址和内容仍要修改,则可进行同样的操作;若显示的内容不需要修改,则可直接按′-′键,使该操作由高地址向低地址单元连续不断地进行。

③按键,结束E命令。

(3)检查和修改寄存器内容的命令R

格式(1):R

此时将显示所有寄存器的内容和全部标志位的状态,以及现行CS:IP所指的机器指令代码和反汇编符号。

格式(2):R 寄存器名

该格式可用于检查和修改指定寄存器的内容。若不修改其内容,可按键,若需要修改其内容,可以输入1-4 个十六进制数,再按键。

格式(3):RF

该格式可用于显示标志和修改标志位状态。

当系统给出标志位状态后,可采取下列办法:

①若不需要修改任一标志位,可按键。

②若需要修改一个或多个标志位,可输入其相反的值。各标志位之间可以无空格且与顺序无关,修改后按键。

由于标志位状态显示时,是用下列特殊符号表示的,因而修改时,只要输入规定的符号即可。下面是标志名和状态符号的对照表:

标志名置位符号复位符号

溢出标志OF(是/否) OV NV

方向标志DF(减/增) DN UP

中断标志IF(允许/禁止) EI DI

符号标志SF(负/正) NG PL

零标志ZF(是/否) ZR NZ

辅助进位标志AF(是/否) AC NA

奇偶校验标志PF(偶/奇) PE PO

进位标志CF(是/否) CY NC

只有追踪标志TF,不能用指令直接修改

例如:输入RF命令,系统可能作出如下响应:

OV DN EI NG ZR AC PE CY -

若现在要修改奇偶、零、中断和溢出标志位,可在光标处输入:

PO NZ DI NV

(4)运行程序命令G

格式:G [=地址][地址[地址…]]

该命令可以在程序运行中设置断点。它是Debug程序进行程序调试的主要命令之一。

示例:-g 001a 则执行从当前cs:ip至001a的指令,注意:地址设置必须从指令的第一字节设起。

①第一个参数“=地址”规定了程序执行的起始地址,以CS内容作段地址,等号后面的地址只需给出地址偏移量。此时,命令G与地址之间的等号不能省去。

如果在G命令执行前,已经设置了CS值和IP值,则也可以直接用G命令,从指定地址执行程序。

②格式中后面给出的地址是指断点地址,最多可设置10个断点。当程序执行到一个断点时,就停下来,显示CPU各寄存器的内容和标志位的状态,以及下一条待执行的指令,被调试程序的所有断点全部被取消,并返回Debug。

③地址参数所指的单元,必须包含有效的8088指令的第一个字节,否则将产生不可预料的结果。

④堆栈必须至少包含有6个可用字节,否则也将产生不可预料的结果。

⑤若断点地址只包括地址偏移量,则认为段地址在CS寄存器中。

(5)追踪命令T

格式(1):T [=地址]

该命令可以在指令执行中进行追踪,若略去地址,则从CS:IP现行值执行。每一次T命令都执行一条指令。

格式(2):T [=地址][值]

此时,它可对多条指令进行追踪,即在执行了由值所指定的若干条指令之后,停止执行并显示各寄存器的内容和各标志位,还指出下一条待执行的指令。

(6)汇编命令A

若在调试目标程序的过程中,要求改写或增添一段目标程序,则可以用A命令直接在Debug下实现。

格式:A [地址]

该命令可以从指定地址开始,将输入的汇编语言语句立即汇编成机器代码,连续存放在内存单元中。在程序输入完毕后,最后一行不输入内容,直接按回车键,即可返回DEBUG程序,还可用反汇编命令U 对刚输入的内容进行反汇编,以验证输入的程序是否正确。

使用A命令应遵守以下规则:

①所有输入数值,均为十六进制数。

②前缀助记符,必须在相关指令的前面输入,可以在同一行,也可以在不同行输入。

③段超越助记符为CS:、DS:、ES:、SS:。

④远调用时的返回指令助记符用RETF。

⑤使用串操作指令时,助记符中必须注明是字节还是字传送。

⑥汇编语言能自动汇编短、近和远的转移及近和远的调用,也能由NEAR和FAR前缀来超越。

例如:

0110:0600 JMP 602;短转移

0110:0602 JMP NEAR 605;近转移

0110:0605 JMP FAR 60A;远转移

第一条JMP指令中含有一个字节偏移量。

第二条JMP指令中含有两个字节偏移量。

第三条JMP指令中含有两个字节的偏移量及两个字节的段地址。

⑦当DEBUG不能确定某些操作数涉及的是字类型存储单元还是字节类型的存储单元时,在这种情况下,必须用前缀“WORD PTR”或“BYTE PTR”来加以说明。

例如:

NEG BYTE PTR [128]

DEC WORD [SI]

⑧当Debug不能确定一个操作数是立即数还是存储单元的地址时,可以把地址放在方括号中。

⑨两个最常用的伪指令DB和DW可以在A命令中使用,用来直接把字节或字的值送入相应的存储单元。

例如:

DB 2,5,3,4,′THIS IS AN EXAMPLE′

DW 6000,2000,7000,′BA′

⑩Debug支持所有形式的寄存器间接寻址命令。

例如:ADD BX,74[BP+3][SI-5]

POP[BX+DI]

(7)反汇编命令U

格式(1):U地址

该命令从指定的地址开始,反汇编32个字节。若略去指定地址,则以上一个U命令反汇编的最后一条指令地址的下一条指令地址作为起始地址;若没有用过U命令,则以由Debug初始化的段寄存器的值作段地址,以100作为地址偏移量。

格式(2):U范围这种格式的命令,可以对指定范围的内存单元进行反汇编,范围可以由起始地址、结束地址(只能包含地址偏移量)或起始地址及长度来指定。其命令格式如:

U 04BA:100 0108 或U 04BA:0100 L7

两者是等效的。

(8)输入命令I

格式:I端口地址

该命令从指定端口输入一个字节并显示。

例如: I 2E8

C C

它表示所显示的是从02E8 端口输入的一个字节为CC。

(9)输出命令O

格式:O端口地址字节值

其功能是向指定的端口输出一个字节。

例如:O 2E8 12

它表示将一个字节12H送到输出端口2E8。

(10)命名命令N

格式:N文件标识符[文件标识符]

该命令用给定的两个文件标识符格式化在CS:5C和CS:6C的两个文件控制块中(若在调用Debug时具有一个文件标识符,则它已格式化在CS:5C的文件控制块中),文件控制块是将要介绍的装入命令L和写命令W所需要的。

N命令能把文件标识符和别的参数放至CS:81开始的参数保存区中。在CS:80中保存输入的字符个数,寄存器AX保存前两个文件标识符中的驱动器标志。

例如:

A> DEBUG

N TEST

L

N命令后,用L命令可将TEST调入自己的CS:100开始的存储区中。若对正在调试的程序TEST进行调试时,需要用到其它的文件标识符及其它参数,也可用N命令加以实现。;

例如:

A> DEBUG TEST

N 文件1 文件2

(11)装入命令L

格式1: L <地址> <驱动器号> <起始逻辑扇区> <所读扇区个数n>

其中<地址>的缺省值为CS:100。逻辑扇区可由物理扇区号换算得到,以双面双密度盘为例:物理扇区是按0面0道1区,0面0道2区,……,0面0道9区,0面1道1区,……,0面39道9区,1面0道1区,……,1面39道9区排列。而逻辑扇区与物理扇区号的对应关系为物理扇区0面0道1扇区至9扇区,逻辑扇区号为0—8;物理扇区1面0道1扇区至9扇区,逻辑扇区号为9—11H;物理扇区0面1道1扇区至9扇区,逻辑扇区号为12—1AH;……。这样每道先0面后1面一直排下去。

其中<驱动器号>为0、1或2,0表示A驱,1表示B驱,2表示硬盘。

功能: 将<驱动器号>指定的盘上,从<起始逻辑扇区>起,共n个逻辑扇区上的所有字节顺序读入指定内存地址开始的一片连续单元。当L后的参数缺省时,必须在L之前由N命令指定(或进入DEBUG时一并指出)所读驱动器文件名。此时L执行后将该文件装入内存。

例如:-N EXAMPLE

-L

将当前驱动器上的EXAMPLE文件装入CS:100起始的一片内存单元。

格式2:L地址或L

该命令把已在CS:5C中格式化的文件控制块所指定的文件装入到指定区域中。

若省略地址,则装入到CS:100开始的内存区域中。

若是带有扩展名.COM或.EXE文件,无论命令中是否指定了地址,一律装入到CS:100开始的内存区域中去。

通常在BX和CX中包含了所读入文件的字节数,但对具有扩展名.EXE文件,则BX和CX中还包含实际程序长度。

(12)写命令W

功能: 为L/W命令指定待装入/写盘文件

格式1:W <地址> <盘号> <起始逻辑扇区> <所写逻辑扇区数n>

功能:与L命令不同的地方是将内存从<地址>起始的一片单元内容写入指定扇区。只有W而没有参数时,与N命令配合使用将文件写盘。该命令把由地址所指定的内存区域中的数据写入指定的驱动器。若地址中只包含偏移量,则段地址在CS中。

其中,扇区号决定了写入起始扇区;区段数决定了写入的区段个数;扇区号和区段数均用十六进制数表示。

格式2:W地址或W

该命令把指定内存区域中的数据,写入到由CS:5C处的文件控制块所规定的文件中去。若省略地址,则内存区域从CS:100 开始。

对于扩展名为.EXE或.HEX文件不能写入。因为这些文件的写入要用一种特殊格式,而此格式Debug 程序不支持。

(13)退出Debug命令Q

格式:Q

该命令退出Debug程序并返回DOS。

Q命令并不把内存中的文件存盘,若需要存盘的话,应在退出前用W命令写入磁盘。

(二)Debug使用举例

现有一个双字加法源程序如下,其中存在错误。现假设已汇编、连结生成了可执行文件HB.EXE,存放在d:\MASM目录下。请使用Debug对其进行调试。

Code SEGMENT

ASSUME CS:code,DS:code

ORG 100H ;从100H处开始存放下列指令

Start:MOV AX,code ;将DS置成code段的首地址

MOV DS,AX

MOV SI,200H ;取第一个数的首地址

MOV AX,[SI] ;将第一个数的低16位取到AX

MOV DI,204H ;取第二个数的首地址

ADD AX,[DI] ;第一个数和第二个数的低16应相加

MOV [SI+8],AX ;低16位相加的结果送到208H和209H单元

MOV AX,[SI+2] ;取第一个数的高16位送到AX中

ADD AX,[DI+2] ;两个数的高16位相加

MOV [SI+10],AX ;高16位相加的结果送到20AH,20BH单元

MOV AX,4C00H ;使用DOS的4CH号功能调用

INT 21H ;进入功能调用,返回DOS

ORG 200H ;从200H处开始存放下列数据

DD 12345678h,654387A9h,0h ;被加数、加数、和

Code ENDS

END start

调试过程:

①进入Debug并装入可执行文件HB.EXE

D:\MASM>Debug HB.EXE

-

②观察寄存器初始状态

-R

AX=0000 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1892 ES=1892 SS=18A2 CS=18A2 IP=0100 NV UP EI PL NZ NA PO NC

18A2:0100 B8A218 MOV AX,18A2

注:(1)以上显示的寄存器值,可能和你的电脑显示的不一样。

(2)Debug中默认的进制是十六进制。

③以单步工作方式开始运行程序

首先用T命令顺序执行用户程序的前l两条指令,将段寄存器DS预置为用户的数据段。-T

AX=18A2 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1892 ES=1892 SS=18A2 CS=18A2 IP=0103 NV UP EI PL NZ NA PO NC

18A2:0103 8ED8 MOV DS,AX

-T

AX=18A2 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=0105 NV UP EI PL NZ NA PO NC

18A2:0105 BE0002 MOV SI,0200

④观察用户程序数据段初始内容

-D 200 20F

18A2:0200 78 56 34 12 A9 87 43 65-00 00 00 00 00 74 13 50 xV4...Ce.....t.P

-

⑤连续工作方式运行程序至返回DOS前(设断点),查看运行结果。为此,现使用U命令反汇编。-U 100

18A2:0100 B8A218 MOV AX,18A2

18A2:0103 8ED8 MOV DS,AX

18A2:0105 BE0002 MOV SI,0200

18A2:0108 8B04 MOV AX,[SI]

18A2:010A BF0402 MOV DI,0204

18A2:010D 0305 ADD AX,[DI]

18A2:010F 894408 MOV [SI+08],AX

18A2:0112 8B4402 MOV AX,[SI+02]

18A2:0115 034502 ADD AX,[DI+02]

18A2:0118 89440A MOV [SI+0A],AX

18A2:011B B8004C MOV AX,4C00

18A2:011E CD21 INT 21

-

可见,要执行10条指令,至011B处停止

-G=100,011B

AX=7777 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0200 DI=0204

DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=011B NV UP EI PL NZ NA PE NC

18A2:011B B8004C MOV AX,4C00

-D 200 20F

18A2:0200 78 56 34 12 A9 87 43 65-21 DE 77 77 43 43 83 06 xV4...Ce!.wwCC..

-

和为7777DE21H,正确。

⑥再取一组数据,查看运行结果。为此,首先用E命令修改数据。

-E 200 CD,AB,78,56,90,EF,34,12

-D 200 20F

18A2:0200 CD AB 78 56 90 EF 34 12-21 DE 77 77 43 43 83 06 ..xV..4.!.wwCC..

-G=100,11B

AX=68AC BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0200 DI=0204

DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=011B NV UP EI PL NZ NA PE NC

18A2:011B B8004C MOV AX,4C00

-D 200 20F

18A2:0200 CD AB 78 56 90 EF 34 12-5D 9B AC 68 43 43 83 06 ..xV..4.]..hCC..

-

和为68AC9B5DH,错误。说明程序有问题。

⑦再将断点设在完成低位字加法后,查看运行结果。

-G=100,112

AX=9B5D BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0200 DI=0204

DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=0112 NV UP EI NG NZ NA PO CY

18A2:0112 8B4402 MOV AX,[SI+02] DS:0202=5678

-D 200 20F

18A2:0200 CD AB 78 56 90 EF 34 12-5D 9B AC 68 43 43 83 06 ..xV..4.]..hCC..

-

低位和为9B5D,正确。说明错误可能出在后面

⑧使用T命令从刚才的断点处向后单步调试,查看运行结果。

-T=112

AX=5678 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0200 DI=0204

DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=0115 NV UP EI NG NZ NA PO CY

18A2:0115 034502 ADD AX,[DI+02] DS:0206=1234

-T

AX=68AC BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0200 DI=0204

DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=0118 NV UP EI PL NZ NA PE NC

18A2:0118 89440A MOV [SI+0A],AX DS:020A=68AC

-

AX寄存器的结果为68AC,而应为68AD。可见是本条加法指令使用错误,这里应使用带进位加法指令。

⑨使用A命令装入正确指令后再次运行,察看结果。

-A 115

18A2:0115 ADC AX,[DI+02]

18A2:0118

-G=100,11B

AX=68AD BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0200 DI=0204

DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=011B NV UP EI PL NZ NA PO NC

18A2:011B B8004C MOV AX,4C00

-D 200 20F

18A2:0200 CD AB 78 56 90 EF 34 12-5D 9B AD 68 43 43 83 06 ..xV..4.]..hCC..

-

和为68AD9B5DH,正确。对于这样一个简单程序一般来说不会再有问题。退出后修改源程序即可。

⑩退出

-Q

D:\>

需要说明的是此程序很简单,只需使用T命令逐条单步调试即可。本例采用的调试方法似乎过于繁琐,但这是为了说明程序调试的一般方法,以便读者调试复杂程序时借鉴。

第二章实验内容

实验一算术运算编程实验

实验目的:

通过实验掌握下列知识:

1.8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。

2.求累加和程序和多字节加减法程序。

实验内容和步骤:

一、内存操作数及各种寻址方式使用:

内容:

MOV AX,1234

MOV [1000],AX

MOV BX,1002

MOV BYTE PTR[BX],20

MOV DL,39

INC BX

MOV [BX],DL

DEC DL

MOV SI,3

MOV [BX+SI],DL

MOV [BX+SI+1],DL

MOV WORD PTR[BX+SI+2],2846

步骤:

1)用A命令键入上述程序,并用T命令逐条运行。

2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及双字节数存放法。

思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

二、求累加和程序:

程序:

MOV BX,1000

MOV CX,10

SUB AX,AX

LOP: ADD AL,[BX]

ADC AH,0

INC BX

LOOP LOP

J: INT 3

步骤:

1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入

LOOP指令时LOP用实际地址值代替。

2)用E命令在内存地址1000H处键入16个数字

3)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查

AX,BX的值是否符合你的预计值。

4)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,

若不一样,检查程序是否有错。

5)重复G J与T,再检查AX是否正确。

6)用G命令使程序运行到结束,检查AX值是否正确。

三、多字节加法程序。

程序:

MOV DI,1000

MOV CX,8

MOV SI,2000

CLC

LOP: MOV AL,[SI]

ADC [DI],AL

INC SI

INC DI

LOOP LOP

INT 20

步骤:

1)用命令键入此程序

2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。

3)用G命令运行此程序,并用D命令检查其结果(存放在哪里?),是否正确?

4)将INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行?试一试。

四、自编程序:

用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同上题。调试并做记录。

五、实验报告要求:

1. 各项实验结果记录。

2. 自编程序原稿及调试后修正稿,写出原稿错在那里。

实验二逻辑运算与移位操作编程实验

一、实验要求和目的

1.了解汇编语言的逻辑运算指令与移位操作指令;

2.熟悉汇编语言中逻辑运算与移位指令的使用方法;

3.掌握利用汇编语言逻辑运算与移位指令实现程序设计的方法。

二、实验内容与步骤

1.实验内容

(1)用A命令编写程序片段,实现逻辑非,逻辑与,逻辑或,逻辑异或,逻辑测试运算;

实验例子,逻辑非:NOT 14H

逻辑与:32H AND 0FH

逻辑或:32H OR 0FH

逻辑异或:32H XOR 0FH

(2)得到实际的结果,用T或P命令查看结果正确性。

(3)进行逻辑测试运算中,注意状态和标志位的变化,并记录。

(4)用A命令写程序片段,在寄存器AX中存入一个数,要求对其用移位命令进行乘8,除4的操作。(5)编写程序片段,实现如下的计算A=10*B,要求用到移位命令,不用乘法计算。

(6)编写指令序列把由DX和AX组成的32位二进制数进行算术左移。

2、实验步骤

(1)学习逻辑运算与移位命令中的基本指令知识,根据实验内容,整理编程思路;

(2)利用在DEBUG调试中的A命令输入对应程序片段;

(3)对写好的程序片段,利用DEBUG的T、D命令或G命令查看数据区,核对实验结果。

三、实验要求

(1)写出实现每个逻辑运算的例子答案;

(2)记录具体实现逻辑运算例子的实验步骤;

(3)对写出的程序片段,加上适量注释;

(4)回答思考问题;

(5)记录实验结果。

四、思考与练习

1.对寄存器清0,有几种方式?怎样用逻辑运算命令来实现?

2.检测一操作数与另一确定的操作数是否相等,用逻辑指令如何实现?

3.(1)对一个数的某几位置位,其余位不变,用什么逻辑操作?编程检验。

(2)对一个数的某几位复位,其余位不变,用什么逻辑操作?编程检验。

(3)对一个数的某几位取反,其余位不变,用什么逻辑操作?编程检验。

4.移位指令如何影响标志位CF、OF?

实验三数据串传送和查表程序

实验目的:

通过实验掌握下列知识:

1.堆栈:堆栈指示器SP和堆栈操作指令PUSH、POP。

2.段寄存器和物理地址计算。

3.查表法和查表指令XLAT。

4.数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP。

5.循环指令ROL、逻辑与指令AND和清方向位指令CLD。

6.伪操作指令DB。

实验内容及步骤:

一、利用查表方法把DX的内容(16进制数)转换成ASCII码:

1. 用A命令键入下列程序:

MOV BX,1000

MOV DI,2000

MOV CX,4

LOP: PUSH CX

MOV CL,4

ROL DX,CL

POP CX

MOV AL,DL

AND AL,OF

XLAT

CLD

STOSB

LOOP LOP

INT 20

2. 用A命令在1000H处键入下列ASCII码并用D命令检查之:

DB `0 1 2 3 4 5 6 7 8 9 A B C D E F'

用D命令检查时注意左边的ASCII码值和右边的字符。

3. 用R命令给DX送一个四位的16进制数(例7F8E)。

4. 用T命令逐条运行这程序到LOOP指令处,观察并记录每次运行结果,特别是SP和堆栈内容(用D命令检查)

5. 用G命令将此程序运行到结束,并用D命令检查2000H处所转换的结果。可注意屏幕右边的ASCII字符与DX是否一致。

二、数据串搬家程序:

1. 用A命令键入下列程序:

MOV SI,1000

MOV DI,1500

MOV CX,0F

LOP: MOV AL,[SI]

MOV [DI],AL

INC SI

INC DI

LOOP LOP

微机原理与接口技术实验汇总

实验要求 1、带预习报告上机 根据实验要求,作好充分预习,设计实验硬件原理及接线图(必须标出相关的管脚号,以备硬件连线及测试),画出程序流程图,写出源程序清单,规划好调试步骤,上机时带预习报告。注意:无预习报告者不得做实验。 2、认真实验,经教师检查后,方可离开 注意掌握软、硬件调试方法,提高分析问题、解决问题的能力。对所编写的程序必须十分清楚,作到知其然,亦知其所以然,硬件电路原理清楚,熟练应用常规的仪器(如万用表、示波器等)检查测试硬件电路。指导教师还会根据实验要求,提出问题。3、按时提交实验报告 实验结束后,在预习报告的基础上,完成实验报告,并于下次实验时交给指导教师。 实验报告格式 实验* ***** ***** ***** 一、实验目的 二、实验内容 三、硬件原理及接线图 四、程序流程图 五、程序清单 六、实验步骤 七、实验结果及现象分析 八、收获及建议 测13实验安排: 地点:综合实验楼0701 实验周次星期小节 一 6 五1,2 二8 五1,2 三10 五1,2 四12 五1,2 五14 五1,2

实验一汇编语言程序的调试 一、实验目的 1、掌握8086汇编程序的编辑、编译、连接及运行过程。 2、掌握使用HQFC软件调试程序的方法。 二、实验内容:编制程序并调试 1、上机调试P45 项目1程序。 要求:1)写出调试步骤 2)记下代码段数据。 3)记下数据段数据 4)用单步调试法调试,记下每句程序目的操作数执行结果。观察每句程序 执行过程中CS、 IP、 FLAGS寄存器的变化。 2、上机调试P54 项目2程序,用单步调试法指出每句程序的调试结果。 要求:1)记下代码段数据。 2)记下数据段数据 3)记下程序执行前附加段数据、程序执行后附加段数据。 3)用单步调试法调试,记下lop句之前每句程序目的操作数执行结果。 观察其它句程序的执行结果,观察每句程序执行过程中CS、 IP、 FLAGS寄存器的 变化。 三、调试步骤 1、编辑源程序,形成****.ASM文件(可用HQFC软件或XP系统下的记事本编辑源程序) (注:在E:盘上建立一个你自己的文件夹,保存你自己的文件) 2、编译,形成****.OBJ文件(可用HQFC软件的编译功能) 3、链接,形成****.EXE文件(可用HQFC软件的构建功能) 4、运行(或调试)(可用HQFC软件的重构运行功能或开始调试) 四、调试步骤参考 1、编译(编译) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择编译选项则程序对当前ASM源文件进行编译,编译调试窗口中输出汇编的结果,若程序汇编有错,则详细报告错误信息。双击输出错误,集成开发环境会自动将错误所在行代码显示。 2、构建(汇编+链接) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择汇编+链接选项则程序对当前ASM源文件进行汇编与链接,编译调试窗口中输出汇编与链接的结果,若程序汇编或链接有错,则详细报告错误信息。双击输出错误,集成开发环境会自动将错误所在行代码显示。 3、重构运行(汇编+链接+执行) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择汇编+链接+执行选项则程序对当前ASM源文件执行,程序自动运行。

微机接口实验

北京科技大学计算机与通信工程学院 实验报告 实验名称:实验一8259 中断控制器应用实验 实验二8254 定时/计数器应用实验 实验三8255 并口控制器应用实验学生姓名: 专业: 班级: 学号: 指导教师: 实验成绩: 实验地点:机电楼320 实验时间:2015 年12 月 4 日

一、实验目的与实验要求 1、实验目的 实验一 1.掌握PC 机中断处理系统的基本原理。 2.掌握可编程中断控制器8259 的应用编程方法。 实验二 1.掌握8254 的工作方式及应用编程。 2.掌握8254 典型应用电路的接法。 实验三 1.掌握8255 的工作方式及应用编程。 2.掌握8255 典型应用电路的接法。 2、实验要求 实验一 (1)实验1-1:PC 机内中断应用实验 ①按接线图连好接线,调用程序源代码8259-1.asm,观察实验现象,将屏幕显示结果以截图方式写在实验报告中。 ②自设计实验。改变接线方式,将单次脉冲连到USB 核心板上的IRQ10 插孔上,参考本实验代码,编程实现IRQ10 中断。(注意:考虑PC 机内中断级联的方式,参看前面的原理说明),将代码写在报告中。 (2)实验1-2:PC 机内中断嵌套实验 ①按接线图连好接线,调用程序源代码8259-2.asm,做如下操作,并将屏幕显示结果以截图的方式写在实验报告中,并分析产生该现象的原因: A.按下连接IRQ 的单次脉冲按键,屏幕上会显示10个3,在屏幕上10 次显示未结束之前,按下连接IRQ10 的单次脉冲按键,观察现象; B.按下连接IRQ10 的单次脉冲按键,屏幕上会显示10个10,在屏幕上10次显示未结束之前,按下连接IRQ3 的单次脉冲按键,观察现象。 ②程序中所有代码均没有注释,请在报告中补全注释,尽量详细。

微机原理实验指导书

微型计算机原理与应用实验指导书 上海大学通信学院

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大写英文字符的源程序,并在源程序下汇编调试机运行。

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

微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部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机一台。

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

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

2

3

实验一:数据传送 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 1.学习程序设计的基本方法和技能,掌握用汇编语言设计、编写、调试和运行程序的方法; 学习用全屏幕编辑软件QEDIT.EXE建立源程序(.ASM文件); 学习用汇编软件MASM.EXE对源文件汇编产生目标文件(.OBJ文件); 学习用连接程序LINK.EXE对目标文件产生可执行文件(.EXE文件); 学习用调试软件TD.EXE调试可执行文件; 2.掌握各种寻址方法以及简单指令的执行过程。 二.实验器材 PC机 三.实验组织运行要求 1.利用堆栈实现AX的内容与BX的内容进行交换。堆栈指针SP=2000H,AX=3000H,BX=5000H; 2.汇编、调试、观察、记录结果; ⑴用QEDIT.EXE软件输入汇编语言源程序,以.ASM格式文件存盘; ⑵用MASM对源程序进行汇编产生二进制目标文件(.OBJ文件),再用连接程序LINK产生可执行文件(.EXE文件); ⑶用调试软件TD调试、运行程序,观察、记录结果。 四.实验步骤 1.进入子目录E:>\SY86后,利用QEDIT.EXE(简称Q)送入以下汇编语言源程序,并以M1.ASM文件存盘 ⑴汇编语言程序的上机过程 ①进入\SY86子目录 E:>CD\SY86 E:\SY86> ②进入QEDIT.EXE 编辑界面 E:\SY86> Q ③输入文件名*.ASM(如M1.ASM)后,输入源程序 源程序 DATA SEGMENT PARA PUBLIC’DATA’ ;数据段定义 DB 512 DUP(0) DATA ENDS STACK SEGMENT PARA STACK’STACK’ ;堆栈段定义 DB 512 DUP( ?) 4

微机接口实验

科技大学计算机与通信工程学院 实验报告 实验名称:实验一8259 中断控制器应用实验 实验二8254 定时/计数器应用实验 实验三8255 并口控制器应用实验学生: 专业: 班级: 学号: 指导教师: 实验成绩: 实验地点:机电楼320 实验时间:2015 年12 月 4 日

一、实验目的与实验要求 1、实验目的 实验一 1.掌握PC 机中断处理系统的基本原理。 2.掌握可编程中断控制器8259 的应用编程方法。 实验二 1.掌握8254 的工作方式及应用编程。 2.掌握8254 典型应用电路的接法。 实验三 1.掌握8255 的工作方式及应用编程。 2.掌握8255 典型应用电路的接法。 2、实验要求 实验一 (1)实验1-1:PC 机中断应用实验 ①按接线图连好接线,调用程序源代码8259-1.asm,观察实验现象,将屏幕显示结果以截图方式写在实验报告中。 ②自设计实验。改变接线方式,将单次脉冲连到USB 核心板上的IRQ10 插孔上,参考本实验代码,编程实现IRQ10 中断。(注意:考虑PC 机中断级联的方式,参看前面的原理说明),将代码写在报告中。 (2)实验1-2:PC 机中断嵌套实验 ①按接线图连好接线,调用程序源代码8259-2.asm,做如下操作,并将屏幕

显示结果以截图的方式写在实验报告中,并分析产生该现象的原因: A.按下连接IRQ 的单次脉冲按键,屏幕上会显示10个3,在屏幕上10 次显示未结束之前,按下连接IRQ10 的单次脉冲按键,观察现象; B.按下连接IRQ10 的单次脉冲按键,屏幕上会显示10个10,在屏幕上10次显示未结束之前,按下连接IRQ3 的单次脉冲按键,观察现象。 ②程序中所有代码均没有注释,请在报告中补全注释,尽量详细。 (3)实验1-3:扩展多中断应用实验 说明:本实验采用查询方式,应用实验箱提供的8259 中断源,向PC 机提交中断请求。拨动开关发起请求一次中断,屏幕上显示相应的中断请求号。 调用程序源码文件8259-3.asm,在程序源代码中划横线的位置,请按照所学8259 工作原理填写并验证,然后将所填容写在实验报告中,并分析所填数据的形成原理。 实验二 (1)实验2-1:计数器应用实验 ①将计数器0 设置为方式3,计数器初值为4,用手动逐个输入单脉冲,用LED 灯观察OUT0 电平变化。将代码中划横线的部分填上相应的代码,并在实验报告中对所填代码做原理分析。 ②如果令计数器0 工作在方式0,其实验现象有什么不同,在报告中进行分析说明。 (2)实验2-2:自设计实验 参考实验一的程序和接线,自行设计接线图以及程序代码,实现,以1MHz为时钟源,应用8254 的定时功能,将其分频为1Hz。以LED灯作为输出显示。

微机原理实验指导书

微机原理及应用实验指导书 南京理工大学机械工程学院 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所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

微机原理及应用实验

实验报告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.实验目的:掌握汇编语言源程序的结构。 2.实验内容:显示一串字符串“hellow world! 班级,学号”。3.实验代码: DATA SEGMENT MS DB ' Hello,World!$' NS DB ' 151044A,151044106$' DATA ENDS STACK SEGMENT STACK DW 50 DUP(?) STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE:CODE,SS:STACK START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET MS MOV AH,9 INT 21H MOV AX,DATA MOV DS,AX

MOV DX,OFFSET NS MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 4.实验结果:

实验二 1.实验目的:熟悉汇编语言源程序的编辑、汇编、连接、调试 过程 2.实验内容:两个8位16进制数相加(生日+当天日期) 3.实验代码: DATA SEGMENT SR DD 19970925H RQ DD 20171111H DATA ENDS STACK SEGMENT STACK DB 50 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV AX,WORD PTR SR ADD AX,WORD PTR RQ

微机原理及应用实验报告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_[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.分析实验结果及所遇到的问题,并说明解决的方法。

微机原理实验指导书

微型计算机原理与应用 实验指导书 上海大学通信学院 2010 年 4 月

PC微机原理实验一 一、目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的 功能。 二、要求:在PC机上完成下列程序的调试运行,并写出运行结果。1.DEBUG的基本操作:(详细容请参阅教材“4.5程序的调试,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 21 MOV DL, 4E INT 21 MOV DL, 44 INT 21 MOV DL, 4F INT 21 MOV DL, 57 INT 21 MOV DL, 53 INT 21 INT 3 ;功能是产生一个断点,不要省略 (4)输入U命令反汇编上面的程序: -U 100 问:这里100代表什么? (5)输入G命令连续运行上面的程序,记录运行结果: -G=100 (6)输入E命令把上面程序中的数据57,49,4E,44,4F,57,53依次分别改为57,45,4C,43,4F,4D,45: -E 103 回车(以下同) -E 107 -E 10B

微机接口实验1

一、8255串口实验一 1 8255芯片的端口地址是 8255 接入的地址线是两位所以有四个端口地址分别是: 00 PA 01 PB 10 PC 11 控制口 记住实验中8255地址是 IOCONPT EQU 0073H 控制口 IOAPT EQU 0070H PA口 IOBPT EQU 0071H PB口 IOCPT EQU 0072H PC口 我们在写出端口则是0070H到0073H 2注释下面指令 MOV DX,IOCONPT ;控制端口地址 OUT DX,AL ;送控制字 MOV DX,IOBPT ;PB端口地址 IN AL,DX ;从PB端口读8位 MOV DX,IOCONPT ;控制端口地址 MOV AL,80H ;控制字内容

OUT DX,AL ;送控制字80H 其中控制字格式是 以看书上148页图7-13和图7-14两个图 二、8253 计数器、计时器实验 1、记住8253 的是个端口 TCONTRO EQU 004BH TCON2 EQU 004AH 还有两个是 0048H和0049H 2、注释下列代码 MOV DX,TCONTRO ;控制端口 MOV AL,0B6H ;T2计时器控制字内容 OUT DX,AL ;送控制字 MOV DX,TCON2 ;T2计时器端口地址 MOV AL,00 ; T2计时器低8位 OUT DX,AL ;送低8位 MOV AL,10H ;T2计时器高8位 OUT DX,AL ;送高8位 因为控制字是 0B6H,要求是先送低位再送高位。

8253控制字格式是: 这个也可以看书 128页图6-4 很详细 3已知译码器是139 两进四出地址是10位 其中端口地址是200H 到 203H,求地址范围? 方法如下: 因为译码器是139输入2位输出4个 高位是用于送译码器的(这里是送两位) 写出200H,203H的二进制是: 0010 0000 0000 其中译码器位是不能动的是10 则后面8个位是可变的从 0000 0000 到1111 1111 最后地址范围是:200H 到2FFH 补充: 译码有三种方法: 1.线性选择法:最高位地址线送译码器 2.部分译码法:从高位中选出所需的位 什么是高位:把所以的地址线看成两半,一半是高位,另一半是低位。 3.全译码法:高位全部送译码器

微机原理实验指导

微机原理实验一简单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读入的数据后从输出口输出。 七、程序框图

微机原理及应用 上机实验报告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

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

微机原理与接口技术课程设计报告题目:继电器控制实验设计 学院电子与信息工程学院 专业通信工程年级 10级 学生姓名 xx 学号 _ xxxxxxxx 指导教师 xx 完成时间 2012/11/9 二O一二年十一月

目录 摘要 (3) 一.实验目的 (4) 二.实验原理 (4) 1 实验基本原理 (4) 2.1继电器结构原理图 (5) 2.2继电器工作原理 (5) 3.1 8255A组成 (6) 3.2 8255A结构框图 (7) 3.3 8255A工作方式 (7) 三.实验内容 (11) 四.程序设计 (12) 4.1程序流程图 (12) 4.2程序代码 (12) 五.实验小结........................................................ 错误!未定义书签。 六.参考文献 ......................................................... 错误!未定义书签。

摘要 现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件,另一方面又要为电子线路的电气电路提供良好的电气隔离,以保护电子电路和人身的安全。继电器便能完成这一桥梁作用。 本课程设计主要采用了控制继电器和8255A芯片来完成。电路的控制端为高电平时,继电器工作常开触点吸合,连触点的LED灯被点亮。当控制端为低电平时,继电器不工作。执行时,对应的LED将随继电器的开关而亮灭。 关键词:控制继电器 8255A芯片

一.实验目的 1、进一步熟悉汇编语言的设计编写 2、掌握继电器控制的基本原理 3、掌握继电器控制编程方法 4、掌握8255芯片的应用 二.实验原理 1、利用8255A PA0输出高低电平,控制继电器的开合,以实现对外部装置的控制。 硬件线路原理图接线如下: 2、继电器 在现代工业中,人员和电子电路安全保障一直是首要考虑的问题,尤其在一些高危恶劣环境下,如高温高压等,如何在保障操作人员和电子电路安全的前提下对电路进行良好地控制便成为了工业进步不可回避的问题。一方面要使电子电路的控制信号能够控制电气电路的执行元件,另一方面又要为电子线路的电气电路提供良好的电气隔离,以保护电子电路和人身的安全,符合这种需求的元件便是继电器。 控制继电器是一种自动电子控制器件,它适用于远距离接通和分断交、直流小容量控制电路, 它具有控制系统和被控制系统,通常应用于自动控制电路中,

微机原理实验指导

实验一 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

微机原理与应用实验报告

微机原理及应用实验报告 班级:机械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.

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

微机原理与接口技术》 上机报告 学院:机电学院指导教师:胡勇学号:631424210229 姓名:鞠其林

实验一初级程序的编写与调试实验 、实验目的 1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序. 2、深入了解数据在存储器中的存取方法, 及堆栈中数据的压入与弹出 3、掌握各种寻址方法以及简单指令的执行过程. 二、实验内容 1、设堆栈指针SP=2000H,AX=3000H,BX=5000H请, 编一程序段将AX的内容和BX 的内容进行交换. 请用堆栈作为两寄存器交换内容的中间存储单元, 用DEBUG调试程序进行汇编与调试. 程序: MOV AX,3000 MOV BX,5000 MOV SP,2000 PUSH AX PUSH BX POP AX POP BX HLT

2、设AX=0002H,编一个程序段将AX的内容乘10, 要求用移位的方法完成程序: MOV AX,0002 MOV BX,AX MOV CL,2 SHL AX,CL ADD AX,BX MOV CL,1 SHL AX,CL HLT

三、心得体会 从这个程序的编辑过程中我感受到了汇编语言的强大,很直观的就可以读懂程 序的含义,但代码比较难记,而且语法严谨,我调试的过程中犯了一点错误, 修改的次数较多,希望我以后可以不再犯同样的错误,也是因为我练的比较的 少,还很生疏,我以后一定多加练习,把汇编学好 实验二 加法及判断程序的编写与调试 、实验目的 1、熟练掌握编写汇编语言源程序的基本方法和基本框架 2、学会编写顺序结构 , 分支结构和循环结构的汇编程序

3、掌握程序中数据的产生与输入输出的方法. 二、实验内容 1、用汇编语言编写一个加法程序: 1325+9839 请用ASCII 码的形式将加数与被加数存放在数据区DATA1和DATA2中, 并将相加结果显示输出. 程序: DATA SEGMENT DATA1 DB '5','2','3','1' DATA2 DB '9','3','8','9' DATA ENDS STACK SEGMENT PARA STACK 'STACK' DB 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA SI,DATA1 LEA DI,DATA2 MOV CX,4 MOV AH,0 NEXT: MOV AL,[SI] ADC AL,[DI] ADC AL,AH MOV AH,0 AAA ADD AL,30H MOV [DI],AL INC DI INC SI LOOP NEXT MOV CX,5 ADD AH,30H MOV [DI],AH NEXT1:MOV DL,[DI] MOV AH,02 INT 21H DEC DI

(完整word版)安徽工业大学微机接口实验报告

《微机原理与接口技术》 实验报告书 专业班级网104班 学号109074 姓名 指导教师高云全 安徽工业大学计算机学院

实验一 8255A应用—数码管动态显示 一、实验目的 1、掌握8255A的工作方式、编程原理和微机接口方法。 2、了解LED数码管动态显示的工作原理及编程方法。 二、实验内容 编制程序,使数码管显示“DICE88”字样。 三、实验程序框图 图6-1 实验程序流程图 四、实验步骤 联机模式: (1)在PC机和实验系统联机状态下,运行实验系统dj8086k.exe(双击桌面OTA图标或通过开始-程序-dj8086k-DJ8086k微机原理与接口技术),新建文件并在编辑窗口输入汇编源程序,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。 (2)数码管显示“DICE88”字样。 脱机模式: (1)在P.态下,通过单板机小键盘,从2DF0地址开始输入机器码(参见附录三),完成后返回监控,输入起始地址2DF0,再按EX键执行。 (2)数码管显示“DICE88”字样。 五、实验程序清单 CODE SEGMENT ; display "DICE88" ASSUME CS:CODE ORG 2DF0H START: JMP START0 PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 BUF DB ?,?,?,?,?,? data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h

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