微机实验报告

微机实验报告
微机实验报告

学院:计算机科学与工程学院

专业:软件工程

学号:152210702235

姓名:张旭

实验一显示程序与数据传送实验

1.实验目的

1) 掌握在PC机上以十六进制形式显示数据的方法。

2)掌握部分DOS功能调用使用方法。

3)掌握与数据有关的不同寻址方式。

4)熟悉Windows集成操作软件Tdpit的操作环境和操作方法。

2.实验设备

PC微机一台、TD-PIT++实验系统一套

3.实验内容及说明

1.显示程序实验

一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数

据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并利用DOS功能调用完成一些提示信息的显示。通过本实验,初步掌握实验系统配套操作软件的使用。

实验中所使用DOS功能调用(INT 21H)说明如下。

(1)显示单个字符输出

入口:AH=02H

调用参数:DL=输出字符

(2)显示字符串

入口:AH=09H

调用参数:DS;DX=串地址,‘$’为结束字符

(3)键盘输入并回显

入口:AH=01H

返回参数:AL=输出字符

(4)返回DOS系统

入口:AH=4CH

调用参数:AL=输出字符

2.数据传送实验

本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标

字符串到屏幕上。

显示程序实验的程序:

STACK1 SEGMENT STACK

DW 256 DUP(?) STACK1 ENDS

DATA SEGMENT USE16

MES DB ‘Press any key to

exit!’,0AH,0DH,0AH,0DH ,’$’

MES1 DB ‘Show a as hex:’,0AH,0DH,’$’

SD DB ‘a’

DATA ENDS

CODE SEGMENT USE16

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX MOV DX,OFFSET MES

MOV AH,09H

INT 21H

MOV DX,OFFSET MES1

MOV AH,09H

INT 21H

MOV SI,0FFSET SD

MOV AL,DS:[SI]

AND AL,0F0H

SHR AL,4

CMP AL,0AH

JB C2

ADD AL,07H

C2: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,DS:[SI]

AND AL,0FH

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

KEY: MOV AH,1

INT 16H

JZ KEY

MOV AX,4C00H

INT 21H

CODE ENDS

END START

数据传送实验程序:

DATA SEGMENT MSR DB "HELLO,WORLD,$"

LEN EQU $- MSR

DATA ENDS

EXDA SEGMENT

MSD DB LEN DUP(?)

EXDA ENDS

MYSTACK SEGMENT STACK

DW 20 DUP

MYSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:EXDA START: MOV AX,DATA

MOV DS,AX

MOV AX,EXDA

MOV ES,AX

MOV SI,OFFSET MSR

MOV DI,OFFSET MSD

MOV CX,LEN

NEXT: MOV AL,[SI]

MOV ES:[DI],AL

INC SI

INC DI

DEC CX

JNC NEXT

PUSH ES

POP DS

MOV DX,OFFSET MSD

MOV AH,9

INT 21H

KEY: MOV AH,1

INT 16H

JZ KEY

MOV AX,4C00H

INT 21H

CODE ENDS

END START

实验二数码转换程序实验

1、实验目的

掌握不同进制数及编码相互转换的程序设计方法。

2、实验设备

PC微机一台、TD-PIT++实验系统一套。

3、实验内容及说明

计算机输入设备输入的信息一般是由 ASCII 码或 BCD 码表示的数据或字符,

CPU 一般均用二进制数进行计算或其他信息处理,处理结果的输出又必须依照外设

的要求变为 ASCII 码、BCD 码或七段显示码等。因此,在应用软件中,各类数制

的转换和代码的转换是必不可少的。计算机与外设间的数码对应关系如表 2-1 所示。数码转换关系如图 2-1 所示。

图 2-1 计算机与外设间的数码转换关系

1.将ASCII码表示的十进制数转换为二进制数

十进制数可以表示为:Dn×10n+Dn-1×10n-1 +…+D0×100=Di×10i 其中Di代表十进制数1、2、3…9、0。

上式可以转换为:ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D0 由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位 Dn 开始作乘10

加次位的操作,依次类推,则可求出二进制数结果。

本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,

并将转换结果按位显示在屏幕上。

2.将十进制数的ASCII码转换为BCD码

本实验要求将键盘输入的一个五位十进制数54321的ASCⅡ码存放在数据区中,

转换为BCD 码后,并将转换结果按位分别显示于屏幕上。若输入的不是十进制数

的ASCⅡ码,则输出“FF”。提示:一字节ASCⅡ码取其低四位即变为BCD码。

3.将十六进制数的ASCII码转换为十进制数

十六位二进制数的值域为0-65535,最大可转换为五位十进制数。五位十进制

数可表示为: ND=D4×104+D3×103+D2×102+D1×10+D0

因此,将十六位二进制数转换为五位ASCⅡ码表示的十进制数,就是求D1-D4,

并将它们转化为ASCⅡ码。

本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结

果显示在屏幕上。

4.BCD码转换为二进制码

本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二

进制数码存入其后的内存单元中,转换结束,送屏幕显示。

4、实验步骤

(1) 运行Tdpit集成操作软件,按照各实验要求分别编写实验程序。

(2) 对实验程序进行编译、链接。

(3) 使用运行功能执行程序,观察运行结果。

(4) 使用调试功能调试程序,观察在调试过程中,程序指令执行之后各寄存器

及数据区的内容。

更改数据区中的数据,反复测试,验证程序功能。

实验程序2.1:

STACK1 SEGMENT STACK

DW 256 DUP(?) STACK1 ENDS

DDATA SEGMENT

MES1 DB 'The ascii code of decimal code are:$'

BUF DB 30H,30H,30H,31H,32H

DB 10H DUP(0) DDATA ENDS

CODE SEGMENT

ASSUME

CS:CODE,DS:DDATA START: MOV AX,DDATA

MOV DS,AX

MOV SI,OFFSET

BUF

MOV BX,000AH

MOV CX,0004H

MOV AH,00H

MOV AL,[SI]

SUB AL,30H

A1: IMUL BX

ADD AL,[SI+01]

INC SI

LOOP A1

MOV [SI],AX

MOV DX,OFFSET

MES1

MOV AH,09H

INT 21H

INC SI

CALL SHOW

DEC SI

CALL SHOW

WAIT1:MOV AH,1

INT 16H

JZ WAIT1

MOV AX,4C00H

INT 21H

SHOW PROC NEAR

MOV AL,DS:[SI]

AND AL,0F0H

SHR AL,4

CMP AL,0AH

JB C2

ADD AL,07H C2: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,DS:[SI]

AND AL,0FH

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

RET

ENDP

CODE ENDS

END START

程序2.2:

STACK1 SEGMENT STACK

DW 256 DUP(?)

STACK1 ENDS

DDATA SEGMENT

MES1 DB 'The BCD code of decimal are:$'

BUF DB 31H,32H,33H,34H,35H

DB 10H DUP(0) DDATA ENDS

CODE SEGMENT

ASSUME

CS:CODE,DS:DDATA

START : MOV AX,DDATA

MOV DS,AX

MOV CX,0005H

MOV DI,OFFSET BUF A1: MOV BL,0FFH

MOV AL,[DI]

CMP AL,3AH

JNB A2

SUB AL,30H

JB A2 MOV BL,AL

A2: MOV AL,BL

MOV [DI+05H],AL

INC DI

LOOP A1

MOV SI,DI

MOV CX,05H

MOV DX,OFFSET MES1

MOV AH,09H

INT 21H

A3: CALL SHOW

MOV DL,20H

MOV AH,02H

INT 21H

INC SI

LOOP A3

WAIT1: MOV AH,1

INT 16H

JZ WAIT1

MOV AX,4C00H

INT 21H

SHOW PROC NEAR

MOV AL,DS:[SI]

AND AL,0F0H

SHR AL,4

CMP AL,0AH

JB C2

ADD AL,07H

C2: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,DS:[SI]

AND AL,0FH

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

RET

ENDP

CODE ENDS

END START

程序2.3:

STACK1 SEGMENT STACK

DW 256 DUP(?) STACK1 ENDS

DDATA SEGMENT

MES1 DB 'The ascii code of hex are:$'

BUF DB 0CH,00H

DB 10H DUP(0) DDATA ENDS CODE SEGMENT

ASSUME

CS:CODE,DS:DDATA

START: MOV AX,DDATA

MOV DS,AX

MOV SI,OFFSET

BUF

MOV DX,[SI]

MOV BX,SI

ADD BX,2

ADD SI,7

A1: DEC SI

MOV AX,DX

MOV DX,0000H

MOV CX,000AH

DIV CX

XCHG AX,DX

ADD AL,30H

MOV [SI],AL

CMP DX,0000H

JNE A1

A2: CMP SI,BX

JZ A3

DEC SI

MOV AL,30H

MOV [SI],AL

JMP A2

A3: MOV CX,5

MOV SI,OFFSET BUF

ADD SI,2

MOV DX,OFFSET MES1

MOV AH,09H

INT 21H

A4: CALL SHOW MOV DL,20H

MOV AH,02H

INT 21H

INC SI

LOOP A4

WAIT1: MOV AH,1

INT 16H

JZ WAIT1

MOV AX,4C00H

INT 21H

SHOW PROC NEAR

MOV AL,DS:[SI]

AND AL,0F0H

SHR AL,4

CMP AL,0AH

JB C2

ADD AL,07H

C2: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,DS:[SI]

AND AL,0FH

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

RET

ENDP

CODE ENDS

END START

程序2.4:

STACK1 SEGMENT STACK

DW 256 DUP(?) STACK1 ENDS

DDATA SEGMENT

MES1 DB 'THE BCD CODE OF BINARY ARE:$'

BUF DB 01H,07H,03H,04H,05H,01H ,06H,08H

DB 10H DUP(0) DDATA ENDS

CODE SEGMENT

ASSUME

CS:CODE,DS:DATA START: MOV AX,DDATA

MOV DS,AX

MOV CX,0004H

MOV DI,OFFSET BUF

A1: MOV AL,[DI]

ADD AL,AL

MOV BL,AL

ADD AL,AL

ADD AL,AL

ADD AL,BL

INC DI

MOV AH,00H

ADD AL,[DI]

MOV [DI+07H],AX

INC DI

LOOP A1

MOV DX,OFFSET MES1

MOV AH,09H

INT 21H

MOV CX,04H

MOV DI,OFFSET BUF

ADD DI,08H

A2: MOV AX,[DI]

CALL SHWORD

MOV DL,20H

MOV AH,02H

INT 21H

INC DI

INC DI

LOOP A2

WAIT1: MOV AH,1

INT 16H

JZ WAIT1

MOV AX,4C00H

INT 21H

SHWORD PROC NEAR

MOV BL,AH

CALL SHOW

MOV BL,AL

CALL SHOW

RET

ENDP

SHOW PROC NEWA

PUSH AX

PUSH DX

MOV AL,BL

AND AL,0F0H

SHR AL,4

CMP AL,0AH

JB C2

ADD AL,07H

C2: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,BL

AND AL,0FH

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H MOV DL,AL

MOV AH,02H

INT 21H

POP DH

POP AX

RET

ENDP

CODE ENDS

END START 实验三运算类指令编程实验

1、实验目的

1)掌握运算类指令编程及调试方法。

2)掌握运算类指令对各状态标志位的影响及测试方法。

2、实验设备

PC微机一台、TD-PIT++实验系统一套。

3、实验内容及说明

80x86 指令系统提供了实现加、减、乘、除运算的基本指令,可对表 3-1 所示的数据类型进行算术运算。

表3-1 数据类型算术运算表

1.二进制双精度加法运算

本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,

Y=00

21B7

9EH。

实验

利用

累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,

再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需用

ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。在

80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。

2.十进制数的BCD码减法运算

本实验要求计算X-Y=Z,其中,X、Y、Z为BCD码,其中X=0400H,Y=0102H。

3.乘法运算

本实验要求实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存

中,被乘数为54320H,乘数为3H,运算结束后,将乘积在屏幕上显示。

4.用减奇数开平方运算

80x86指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通过

程序来实现的。用减奇数法可求得近似平方根,获得平方根的整数部分。我们知道,

N个自然数中的奇数之和等于N ,即:

2

1+3+5=9=3

2

1+3+5+7=16=4

2

1+3+5+7+9+11+13+15=64=8

2

若要做S的开方运算,那麽就可以从S中逐次减去自然数中的奇数1,3,5,7…,一直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。本实验要求利用减奇法计算0040H的开平方值,并将运算结果显示在屏幕上。

4、实验步骤

(1) 运行Tdpit集成操作软件,按各实验要求编写实验程序。

(2) 分别对实验程序进行编译、链接。

(3) 使用运行功能运行程序,观察运行结果。

(4) 使用调试功能调试程序,观察在调试过程中,各运算指令执行后,各寄存器、标志位及数据区内容的变化。

(5) 更改数据区中的数据,反复测试,验证程序功能。

实验程序3.1:

STACK1 SEGMENT STACK

DW 256 DUP(?) STACK1 ENDS

DATA SEGMENT

MES1 DB 'THE RESULT IS:$' XL DW 65A0H

XH DW 0015H

YL DW 0B79EH

YH DW 0021H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET MES1

MOV AH,09H

INT 21H

MOV AX,XL

ADD AX,YL

MOV BX,AX

MOV AX,XH

ADC AX,YH

PUSH BX

CALL SHWORD

POP BX

MOV AX,BX

CALL SHWORD

WAIT1:MOV AH,1

INT 16H

JZ WAIT1

MOV AX,4C00H

INT 21H

SHWORD PROC NEAR

MOV BL,AL

CALL SHOW

RET

ENDP

SHOW PROC NEAR

PUSH AX

PUSH DX

MOV AL,BL

AND AL,0F0H

SHR AL,4

CMP AL,0AH

JB C2

ADD AL,07H

C2: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,BL

AND AL,0FH

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

POP DX

POP AX

RET

ENDP

CODE ENDS

END START

程序3.2:

STACK1 SEGMENT STACK DW 256(?) STACK1 ENDS

DATA SEGMENT

MES1 DB 'THE RESULT IS:$' X DW 0400H

Y DW 0102H

DATA ENDS

CODE SEGMENT

ASSUME

CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX

MOV AH,00H

SAHF

MOV SI,OFFSET X

MOV AL,[SI]

SBB AL,[SI+02H]

DAS

PUSHF

AND AL,0FH

POPF

MOV BL,AL

INC SI

MOV AL,[SI]

SBB AL,[SI+02H]

DAS

PUSHF

AND AL,0FH

POPF

MOV BH,AL

MOV DX,OFFSET MES1

MOV AH,09H

INT 21H

MOV AX,BX

CALL SHWORD

WAIT1:MOV AH,1

INT 16H

JZ WAIT1

MOV AX,4C00H

INT 21H

SHWORD PROC NEAR

MOV BL,AH

CALL SHOW

MOV BL,AL

CALL SHOW

RET

ENDP

SHOW PROC NEAR

PUSH AX

PUSH DX

MOV AL,BL

AND AL,0F0H

SHR AL,4

CMP AL,0AH

JB C2

ADD AL,07H

C2: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,BL

AND AL,0FH

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

POP DX

POP AX

RET

ENDP

CODE ENDS

END START

程序3.3:

STACK1 SEGMENT STACK

SU 256(?)

STACK1 ENDS

DATA SEGMENT

MES1 DB 'THE RESULT IS:$' ERRMES DB 'ERROR EXIST:$' DATA1 DB 00H,022H,03H,04H,05H DATA2 DB 03H

RESULT DB 06H DUP(0) DATA ENDS

CODE SEGMENT

ASSUME

CS:CODE,DS:DATA

START :MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET DATA2

MOV BL,[SI]

AND BL,0FH

CMP BL,09H

JNC ERROR

MOV SI,OFFSET DATA1

MOV DI,OFFSET RESULT

MOV CX,0005H

A1: MOV AL,[SI+04H]

AND AL,0FH

CMP AL,0FH

JNC ERROR

DEC SI

MUL BL

AAM

ADD AL,[DI+05H]

AAA

MOV [DI+05H],AL

DEC DI

MOV DX,OFFSET MES1

MOV AH,09H

INT 21H

MOV CX,06H

MOV SI,OFFSET RESULT

A2: MOV CALL SHOW

MOV DL,20H

MOV AH,02H

INT 21H

INC SI

LOOP A2

WAIT:MOV AH,1

INT 16H

JZ WAIT1

MOV AX,4C00H

INT 21H

ERROR:MOV DX,OFFSET ERRMES

MOV AH,09H

INT 21H

MOV AX,4C00H

INT 21H

SHOW PROC NEAR

MOV AL,DS:[SI]

AND AL,0F0H

SHR AL,4

CMP AL,0AH

JB C2

ADD AL,07H

C2: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,DS:[SI]

AND AL,0FH

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

RET

ENDP

CODE ENS

END START

程序3.4:

STACK1 SEGMENT STACK

DW 256 DUP(?) STACK1 ENDS

DDATA SEGMENT

MES1 DB 'THE SQUARE ROOT OF $'

MES2 DB ' IS:$'

NUMB DW 0040H

DDATA ENDS

CODE SEGMENT

ASSUME

CS:CODE,DS:DDATA START: MOV AX,DDATA

MOV DS,AX

MOV DX,OFFSET MES1

MOV AH,09H

INT 21H

MOV SI,OFFSET NUMB

MOV AX,[SI]

CALL SHWORD

MOV DX,OFFSET MES2

MOV AH,09H

INT 21H

MOV AX,[SI]

MOV CL,00H

MOV DX,0001H

A1: SUB AX,DX

JB A2

INC CL

ADD DX,02H

JMP A1

A2: MOV BL,CL

CALL SHOW

WAIT:MOV AH,1

INT 16H

JZ WAIT1

MOV AX,4C00H

INT 21H

SHWORD PROC NEAR

MOV BL,AH

CALL SHOW

MOV BL,AL

CALL SHOW

RET

ENDP

SHOW PROC NEAR

PUSH AX

PUSH DX

MOV AL,BL

AND AL,0F0H

SHR AL,4

CMP AL,0AH

JB C2

ADD AL,07H

SHOW PROC NEAR

PUSH AX

PUSH DX

MOV AL,BL

AND AL,0F0H

CMP AL,0AH

JB C2

ADD AL,07H

C2: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,BL

AND AL,0FH

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

POP DX

POP AX

RET

ENDP

CODE ENDS

END START

实验四 8/32位 I/O接口实验

1、实验目的

1)掌握基本I/O接口电路的设计方法。

2)熟悉I/O操作指令及8 /32位I/O端口的操作方法。

3)了解LED点阵的基本结构。

4)学习LED点阵扫描显示程序的设计方法。

2、实验设备

PC微机一台、TD-PIT++实验系统一套。

3、实验内容

(1) 利用8位I/O接口,实现微机对外部输入数据的读取和对输出数据的输出。用

拨动开关和数据灯作为输入和输出显示设备,将读到开关的数据显示在数据灯上。

(2) 利用32位的I/O接口,按照32位的I/O操作方式,操作点阵LED显示单元的16 行×16列点阵。

(3) 使用32位I/O接口单元的32位输出O0~O31控制点阵LED单元R0~R15

和L0~L15。编写程序,在16×16点阵上显示汉字(学生姓名)。

4、实验原理

1.输入接口设计

输入接口一般用三态缓冲器实现,外部设备输入数据通过三态缓冲器,通过数

据总线传送给微机系统。74LS245 是一种 8 通道双向的三态缓冲器,其管脚结构如

图 4-1 所示。DIR 引脚控制缓冲器数据方向,DIR 为 1 表示数据由 A[7:0]至 B[7:0],DIR 为 0 表示数据由 B[7:0]至 A[7:0]。G 引脚为缓冲器的片选信号,低电平有效。

图 4-1 74LS245双向三态缓冲器管脚图

2.输出接口设计

输出接口一般用锁存器实现,从总线送出的数据可以暂存在锁存器中。

74LS374/74LS574 是一种 8 通道上沿触发锁存器。74LS574 管脚结构如图 4-2 所示。D[7:0]为输入数据线,Q[7:0]为输出数据线。CLK 引脚为锁存控制信号,上升沿有效。当上升沿到时,输出数据线锁存输入数据线上的数据。OE 引脚为锁存器的片选信号,

低电平有效。

图 4-2 74LS574上沿触发锁存器管脚图

3.8位I/O接口设计

用一组74LS245和74LS374/574可以构成一个8位的I/O接口电路,既实现数

据的输入又实现数据的输出,输入输出可以占用同一个端口。是输入还是输出用总

线读写信号来区分。总线读信号IOR和片选信号CS相“或”来控制输入接口74LS245

的使能信号G。总线写信号IOW和片选信号CS相“或”来控制输出接口74LS574的锁

存信号CLK。实验系统中基本I/O接口单元就实现了这种的电路,8位I/O电路连接

如图4-3所示。

IN AL,DX ;将IA[7:0]连接设备的8位数据通过数据总线D[7:0]输入到AL。

OUT DX,AL ;将AL 中的数据通过数据总线D[7:0]输出到OA[7:0]连接的设备。

图 4-3 用 74LS245和 74LS574组成的 8位 I/O接口电路

4.32位I/O接口设计

用四组 8 位的 I/O 接口电路可以构成一个 32 位的 I/O 接口电路,可以一次进行

32 位数据宽度的 I/O 操作。I/O 读、写、片选信号对输入输出的控制基本和 8 位 I/O 接口电路相同,但是,对于 32 位数据总线,每个字节都对应着一位字节使能信号,

共有 4 位字节使能信号 BE0~BE3,因此每个 8 位 I/O 接口电路是否有效要受 BE[3:0] 的控制。

IN EAX,DX ;将I[31:0]连接设备的32位数据通过数据总线D[31:0]输入到EAX。

OUT DX,EAX ;将 EAX中的数据通过数据总线 D[31:0]输出到 O[31:0]连接的设备。5.16×16点阵工作原理

8×8 点阵 LED 相当于 8×8 个发光管组成的阵列,对于共阳极 LED 来说,其

中每一行共用一个阳极(行控制),每一列共用一个阴极(列控制)。行控制和列控

制满足正确的电平就可使相应行列的发光管点亮。实验平台上点阵 LED 的管脚及相

应的行、列控制位如图 4-4 所示。

图 4-4 点阵 LED管脚图

共阳极和共阴极 LED的内部结构分别如图 4-5和 4-6所示。

图 4-5 共阳极 LED内部结构图图 4-6 共阴极 LED内部结构图

4、实验说明及步骤

1.8位I/O操作实验

本实验实现的是将开关 K[7:0]的数据通过输入数据通道读入 CPU 的寄存器,然

后再通过输出数据通道将该数据输出到数据灯显示,该程序循环运行,直到按动 PC

键盘上任意按键再退出程序。实验程序流程如图 4-7 所示。参考实验接线如图 5-8

所示。

实验步骤如下:

(1)按图4-8连接实验线路图。

(2)运行Tdpit集成操作软件,根据实验内容,编写实验程序,对实验程序进

行编译、链接。

(3)运行程序,拨动开关,观看数据灯显示是否正确。

图 4-7 8位 I/O接口设计实验参考流程图图 4-8 8位 I/O接口设计实验参考接线图2.32位I/O操作实验

本实验利用点阵LED显示单元的16×16点阵,将16行控制和16列控制合成一个

32位端口来操作(列控制连接到发光管的阳极,行控制连接发光管的阴极,列为“1”,

相应的行为“0”,则对应的一列发光管点亮)。用32位I/O接口单元中的32位输出O[31:0] 的高16位控制16列,低16位控制16行,即一次I/O操作就可完成LED点阵的一次显示。实验要求控制点阵循环逐行显示,直到按动PC键盘上任意按键再停止程序退出。

实验步骤如下:

(1)实验接线

图如图4-9所示,按图连接实验线路图。

(2)运行Tdpit

集成操作软件,根据实验内容,编写实验

程序,对实验程序进行编译、链接。

(3)运行程序,观看LED点阵显示是否正确。

3.点阵显示实验

利用取字模软件得到汉字字符数组,设计程序,在点阵上显示学生姓名。实验

参考接线如图4-9所示。实验步骤如下:

(1) 按图4-9连接实验线路图。

(2) 运行Tdpit集成操作软件,根据实验要求编写实验程序,编译、链接。

(3) 运行程序,观察点阵的显示,验证程序功能。

使用点阵显示符号时,必须首先得到显示符号的编码,这可以根据需要通过不同的工具获得。

实验程序4.1:

IOYO EQU 3000H STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE START: MOV DX,IOYO

IN AL,DX

OUT DX,AL

MOV AH,1

INT 16H

JZ START

QUIT : MOV AX,4C00H INT 21H

CODE ENDS

END START

程序4.2:

IOYO EQU 3000H STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS

CODE SEGMENT USE16

ASSUME CS:CODE START: MOV CX,16

MOV EAX,00000001H LOOP1:MOV DX,IOYO

OUT DX,EAX

CALL DALLY

ROL EAX,1

LOOP LOOP1

CHECK:MOV AH,1

JNT 16H

JZ START QUIT: MOV EAX,0

MOV DX,IOYO

OUT DX,EAX

MOV AX,4C00H

INT 21H

DALLY PROC NEAR

PUSH EAX

MOV EAX,08FFFFFFH D1: DEC EAX

JNZ D1

POP EAX

RET

DALLY ENDS

CODE ENDS

END START

实验五 8255并口控制器应用实验

1、实验目的

1)学习并掌握8255的工作方式及其应用。

2)掌握8255典型应用电路的接法。

2、实验设备

PC微机一台、TD-PIT++实验系统一套。

3、实验内容

基本输入输出实验

编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。

4、实验原理

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本

输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。8255

的内部结构及引脚如图5-1所示,8255工作方式控制字和C口按位置位/复位控制字

格式如图5-2所示。

图5-1 8255内部结构及外部引脚图

图5-2 8255控制字格式

8255实验单元电路图如图5-3所示:

图5-3 8255实验单元电路图

5、实验步骤

本实验使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。

具体实验步骤如下述:

(1)实验接线图如图5-4所示,按图连接实验线路图。

(2)运行Tdpit集成操作软件,根据实验内容,编写实验程序,编译、链接。

(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

图5-4 8255基本输入输出实验接线图

实验程序:

IOYO EQU 3000H

MY8255_A EQU IOYO+00H*4 MY8255_B EQU IOYO+01H*4 MY8255_C EQU IOYO+02H*4 MY8255_MODE EQU IOYO+03H*4

STACK1 SEGMENT STACK

DW 256 HUJDUP(?) STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE START:MOV DX,MY8255_MODE MOV AL,82H

OUT DX,AL

LOOP1:MOV DX,MY8255_B

IN AL,DX

MOV DX,MY8255_A

OUT DX,AL

MOV AH,1

INT 16H

JZ LOOP1 QUIT:MOV AX,4C00H INT 21H CODE ENDS

END START

微机系统实验报告

西安电子科技大学 实验报告

实验一汇编语言编程实验 一、实验目的 (1)掌握汇编语言的编程方法 (2)掌握 DOS 功能调用的使用方法 (3)掌握汇编语言程序的调试运行过程 二、实验设备 PC 机一台。 三、实验内容 1. 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。 2. 在屏幕上显示自己的学号姓名信息。 3. 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。 4. 自主设计输入显示信息,完成编程与调试,演示实验结果。 四、实验源码 DA TA SEGMENT DISCHA DB'WangHan 14030188004',0AH,0DH,'$' TAB DB' ',0AH,0DH,'$' BLANK DB' $' DA TA ENDS STACK SEGMENT STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK START: MOV AX,SEG DISCHA MOV DS,AX MOV DX,OFFSET DISCHA MOV AH,09H INT 21H NEXT: MOV AH,01H INT 21H CMP AL,'Q' JE ENDSS

CMP AL,'q' JE ENDSS MOV BL,AL MOV AX,SEG BLANK MOV DS,AX MOV DX,OFFSET BLANK MOV AH,09H INT 21H MOV BH,0AH MOV DL,BL MOV CL,04H SHR DL,CL CMP DL,BH JNL Q3 JMP Q2 Q1: ADD DL,07H Q2: ADD DL,30H MOV AH,02H INT 21H MOV DL,BL MOV DH,0FH AND DL,DH CMP DL,BH JNL Q3 JMP Q4 Q3: ADD DL,07H Q4: ADD DL,30H MOV AH,02H INT 21H MOV AX,SEG TAB MOV DS,AX MOV DX,OFFSET TAB MOV AH,09H INT 21H MOV CX,0009H LOOP NEXT

【微机实验报告(含思考题)河畔下的哈】实验3

电子科技大学 实验报告 学号学生姓名: 课程名称: 任课老师: 实验项目名称

实验三 ARM汇编实现串口通信实验 【实验目的】 1.掌握ARM 的串行口工作原理。 2.学习编程实现ARM和PC机的UART通信。 3.掌握ARM裸机下汇编语言编程方法。 【实验内容】 1.学习串行通信原理,了解串行通信控制寄存器。 2.编程实现ARM 和计算机之间的串行通信。 【预备知识】 1、ARM汇编基础 2、ARM处理器通用IO口的操作 【实验设备和工具】 ?硬件:ARM嵌入式开发平台,PC 机一台,并口线,串口线,JTAG板 ?软件:RVDS,H-JTAG 【实验原理】 1.异步串行I/O 异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线(输入,输出)即可进行。 2.串口通信流程 串口通信就是读写寄存器的操作,通过配置相关寄存器,查询寄存器就可以操作串口通信。需要配置的寄存器有系统时钟,UART行控制寄存器,UART控制寄存器,UART FIFO控制寄存器,UART MODEM控制寄存器,UART波特率控制寄存器;需要查询的寄存器是发送/接收状态寄存器。 【实验步骤】 1. 打开CodeWarrior for RVDS,建立一个工程,通过查S3C2440处理器手册的UART通信寄存器,serialcommutication.s文件中添加代码实现串口通信传输 2. 设置工程配置选项,Language Setting->Realview Assembler和Realview Compiler中的Architecture设置为ARM920T,配置RVDS下的连接器Linker->Realview Linker中的RO Base 为0x30000000

西安交通大学微机原理第一次实验报告

微型计算机原理与接口技术 第一次实验报告 实验者姓名: 实验者学号: 所在班级: 报告完成日期:20年月日

实验二分支程序的设计 一、实验目的 1.学习提示信息的显示及键盘输入字符的方法。 2.掌握分支程序的设计方法。 二、实验内容 在提示信息下,从键盘输入原码表示的二位十六进制有符号数。当此数大于0时,屏幕显示此数为正数;当此数小于0时,屏幕显示此数为负数;当此数等于0时,屏幕显示此数为零。 三、实验调试过程 利用-u命令进行反汇编,结果如下。三个CMP语句运行完的地址如图所示,第一个CMP运行完的是29H 输出结果的地址如下图所示: 首先对输入为负数时进行验证:输入FFH,设置一个断点在29H,利用-t命令观察跳转,结果如图:

可以看到,程序最终正确的转入输出负的分支。再输入正数11H,利用-t观察整个比较过程如下: 可以看到,程序最终正确的转入输出正的分支。最后输入00H,利用-t观察整个比较过程如下:

可以看到,程序最终正确的转入输出0的分支。 四、实验框图及程序代码 实验框图:

程序代码: CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H ENDM DA TA SEGMENT ;定义结果信息 MESS1 DB 'INPUT DATA:',0DH,0AH,'$' MESS2 DB 'THIS DATA IS+',0DH,0AH,'$' MESS3 DB 'THIS DATA IS-',0DH,0AH,'$' MESS4 DB 'THIS DATA IS ZERO',0DH,0AH,'$' DA TABUF DB 3 ;定义最大可输入字符长度ACTLEN DB ? ;实际输入字符长度 STRING DB 3 DUP(?) ;输入字符缓冲区 DA TA ENDS SSEG SEGMENT PARA STACK 'STACK' DB 50 DUP(0) SSEG ENDS CODE SEGMENT ASSUME CS:CODE,SS:SSEG,DS:DA TA START:MOV AX,DATA MOV DS,AX MOV AX,SSEG MOV SS,AX MOV DX,OFFSET MESS1 MOV AH,09H INT 21H MOV AH,0AH MOV DX,OFFSET DATABUF INT 21H CRLF MOV AL,STRING CMP AL,38H JAE ISNEG CMP AL,30H JNZ ISPOS

微机原理实验报告

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

微机实验报告

微机实验报告 标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

第一次实验 实验01 I/O端口地址译码实验 一、实验目的 掌握I/O地址译码电路的工作原理。 二、实验原理 1、实验电路如原理图所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址”输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,…… 当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV DX,290H OUT DX,AL(或IN AL,DX) Y2输出一个负脉冲,执行下面两条指令: MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲。 (II型机) 2. 接线 II型机: I/O 地址/Y2(290H---297H) 接 D 触发器/CLK I/O 地址/Y4(2A0H---2A7H) 接 D 触发器/CD D 触发器/D 接 D 触发器/SD 接+5V D 触发器/Q 接逻辑笔或L7 I型机: I/O 地址/Y4 接 D 触发器/CLK I/O 地址/Y5 接 D 触发器/CD

…… 三、实验内容 利用负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。 四、实验内容实现分析 分析实验连接图;说明实现该内容的原理;画出流程图。 五、实验程序 DATA SEGMENT OUTPORT1 EQU 290H OUTPORT2 EQU 2A0H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA

计算机操作系统 实验报告

操作系统实验报告 学院:计算机与通信工程学院 专业:计算机科学与技术 班级: 学号: 姓名: 指导教师: 成绩: 2014年 1 月 1 日

实验一线程的状态和转换(5分) 1 实验目的和要求 目的:熟悉线程的状态及其转换,理解线程状态转换与线程调度的关系。 要求: (1)跟踪调试EOS线程在各种状态间的转换过程,分析EOS中线程状态及其转换的相关源代码; (2)修改EOS的源代码,为线程增加挂起状态。 2 完成的实验内容 2.1 EOS线程状态转换过程的跟踪与源代码分析 (分析EOS中线程状态及其转换的核心源代码,说明EOS定义的线程状态以及状态转换的实现方法;给出在本部分实验过程中完成的主要工作,包括调试、跟踪与思考等) 1.EOS 准备了一个控制台命令“loop ”,这个命令的命令函数是 ke/sysproc.c 文件中的ConsoleCmdLoop 函数(第797行,在此函数中使用 LoopThreadFunction 函数(第755 行)创建了一个优先级为 8 的线程(后面简称为“loop 线程”),该线程会在控制台中不停的(死循环)输出该线程的ID和执行计数,执行计数会不停的增长以表示该线程在不停的运行。loop命令执行的效果可以参见下图: 2. 线程由阻塞状态进入就绪状态 (1)在虚拟机窗口中按下一次空格键。 (2)此时EOS会在PspUnwaitThread函数中的断点处中断。在“调试”菜单中选择“快速监视”,在快速监视对话框的表达式编辑框中输入表达式“*Thread”,然后点击“重新计算”按钮,即可查看线程控制块(TCB)中的信息。其中State域的值为3(Waiting),双向链表项StateListEntry的Next和Prev指针的值都不为0,说明这个线程还处于阻塞状态,并在某个同步对象的等待队列中;StartAddr域的值为IopConsoleDispatchThread,说明这个线程就是控制台派遣线程。 (3)关闭快速监视对话框,激活“调用堆栈”窗口。根据当前的调用堆栈,可以看到是由键盘中断服务程序(KdbIsr)进入的。当按下空格键后,就会发生键盘中断,从而触发键盘中断服务程序。在该服务程序的最后中会唤醒控制台派遣线程,将键盘事件派遣到活动的控制台。 (4)在“调用堆栈”窗口中双击PspWakeThread函数对应的堆栈项。可以看到在此函数中连续调用了PspUnwaitThread函数和PspReadyThread函数,从而使处于阻塞状态的控制台派遣线程进入就绪状态。 (5)在“调用堆栈”窗口中双击PspUnwaitThread函数对应的堆栈项,先来看看此函数是如何改变线程状态的。按F10单步调试直到此函数的最后,然后再从快速监视对

微机原理实验报告

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

微机实验报告(1)

《微机实验》报告 实验名称 KeilC的使用与汇编语言上机操作 指导教师刘小英 专业班级中法1201 姓名肖洋学号 U3 联系电话 一、任务要求 1.掌握KeilC环境的使用 1)字节拆分、合并:调试程序,观察相关寄存器和单元的内容。 2)数据块填充:调试程序,观察相关寄存器和单元的内容。 2. 编写两个十六位数的加法程序。 有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八 位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。 二、设计思路 1.字节拆分、合并程序:利用汇编语言中的 XCHD 和 SWAP 两个语句来实现将八位二进制 数拆分为两个四位二进制数并分别存储于不同的存储空间的功能,BCD 码与 30H 相或(加 上 30H)得到 ASCII 码。将两个 ASCII 码和 0FH 相与(高四位清零)得到 BCD 码,利 用 SWAP 语句将高位数放至高四位,将高位数和低位数相或可实现字节的合并。 2.数据块填充程序:将 R0 用作计数器,DPTR 用作片外数据指针,A 作为原始数据来源, 依顺序在片外的存储单元内容填充数据。利用循环语句来减少程序长度,并控制填充单 元个数为片外 100H 个。(通过 R0 的进位控制) 3.两个十六位数加法程序:把第一个十六位无符号数的地八位和高八位分别存于 20H 和 21H 中,把第二个十六位无符号数的地八位和高八位分别存于 30H 和 31H 中,对 20H 和 30H 中的两个低八位进行 ADD 加法操作,结果存于 R4 中;然后对 21H 和 31H 中的两 个高八位进行 ADDC 带进位的加法操作,结果存于 R3 中.然后将累加器 A 清零,并和#00H

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

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

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

微机汇编语言编程系统实验报告

微机系统实验报告 实验一汇编语言编程实验 一、实验目的 (1)掌握汇编语言的编程方法 (2)掌握DOS功能调用的使用方法 (3)掌握汇编语言程序的调试运行过程 二、实验设备 PC机一台。 三、实验内容 (1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。 (2) 在屏幕上显示自己的学号姓名信息。 (3)循环从键盘读入字符并回显在屏幕上,然后显示

出对应字符的ASCII码,直到输入“Q”或“q”时结束。 (4)自主设计输入显示信息,完成编程与调试,演示实验结果。 考核方式:完成实验内容(1)(2)(3)通过, 完成实验内容(4)优秀。 实验中使用的DOS功能调用:INT 21H 表3-1-1 显示实验中可使用DOS功能调用

四、实验步骤 (1)运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。 (2)使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。

(3)“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。按F9连续运行。 (4)更改数据区的数据,考察程序的正确性。 五、实验程序 DATA SEGMENT BUFFER DB '03121370konglingling:',0AH,0DH,'$' BUFFER2 DB 'aAbBcC','$' BUFFER3 DB 0AH,0DH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX mov ah,09h mov DX,OFFSET BUFFER int 21h MOV SI,OFFSET BUFFER2

微机实验报告

成绩:实验报告 课程名称:微机原理及应用 实验项目:存储器块清零实验 姓名:李顺源 专业:机械电子工程 班级:机电09-3班 学号:0901040320 计算机科学与技术学院 实验教学中心 2011年11月12日

软件实验一存储器块清零实验 一、实验目的: 1、掌握存储器读写方法; 2、了解存储器的块操作方法。 二、实验内容: 指定存储器中某块的起始地址和长度,要求能将其内容清零。 具体要求:将数据段中以BLOCK地址(0400H)开始的256个内存单元清零。 三、实验用设备仪器及材料: 计算机,伟福Lab2000P仿真实验箱。 四、实验方法及步骤: 1.打开试验箱电源。 2.在windows桌面上双击WAVE图标。 3.建立与伟福实验箱的通信仿真器的选择:Lad2000P仿真实验系统 仿真头:8088/86实验 端口选择:COMI 4.编写实验程序。 5.编译:项目\编译,编译的过程同时也是将程序下传到实验台。 6.程序执行前:检查数据段中以BLOCK地址开始的256哥单元的内容。 7.运行(全速执行,单步,跟踪)。 8.程序执行后:检查数据段中以BLOCK地址开始的256个单元的内容。 9.关实验箱电源,关主机。

五、实验程序流程图: 设置块起始地址 设置块长度 当前地址内容清零地址加1 否 是否清除完 是 结束 六、发挥部分 编写程序 1.实现将存储器0400H—04FFH的4个单元改为0—FH。data segment Block db256 dup(55h) data ends Code segment Assume cs:code,ds:data Start proc near Mov ax , data Mov ds ,ax Mov bx ,off set Block Mov cx ,4 Mov dx,OH Again mov[bx],dx

华科_计算机系统实验报告

课程实验报告课程名称:计算机系统基础 专业班级: 学号: 姓名: 指导教师: 报告日期:年月日 计算机科学与技术学院

目录 实验1: (1) 实验2: (7) 实验3: (24) 实验总结 (34)

实验1:数据表示 1.1 实验概述 实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。 实验目标:加深对数据二进制编码表示的了解。 实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。 实验语言:c。 实验环境:linux 1.2 实验内容 需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。 1)位操作 表1列出了bits.c中一组操作和测试位组的函数。其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。 你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。 表1 位操作题目列表

2)补码运算 表2列出了bits.c中一组使用整数的补码表示的函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。 表2 补码运算题目列表 3)浮点数操作 表3列出了bits.c中一组浮点数二进制表示的操作函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。 表3 浮点数操作题目列表

微机实验报告

实验报告 课程名称微型计算机系统原理及应用(第五版)实验课时 实验项目汇编语言实现c=a+b 实验时间 1 指导老师实验成绩 实验目的(本次上机实验所涉及并要求掌握的知识点)熟练掌握编写汇编语言源程序的基本方法和基本框架熟练使用debug调试程序 掌握用Dos功能调用,实现字符的输入与显示 汇编语言实现c=a+b 实验环境DosBox 0.74 实验内容汇编语言程序上机——通过键盘输入两个数(两个数相加不超9),两数相加后输出在屏幕上步骤: 汇编语言的汇编过程 程序运行步骤及生成的文件 (1)编辑程序(try1.asm文件) myfile.asm 编辑程序 汇编程序 链接程序 myfile.crf otherfiles.obj myfile.lst myfile.obj myfile.map myfile.exe 编辑汇编链接 无错 编辑程序 EDIT 可执行文件 EXE 二进制目标文件 OBJ 源程序 ASM 有错

在dos界面下输入try1 *.asm可以看到d盘中的masm文件夹下有try1.asm文件 (2)汇编程序 给list文件命名:try1 引用文件名可以默认, 会发现无警告性错误,也无致命性错误 在无错的情况下汇编成二进制文件try1.obj

(3)链接程序 (4)执行程序 总结(对上机实验结果进行分析,上机心得体会及改进意见通过本次上机,我学习到了如下内容: (1)我对汇编语言的汇编与执行一个程序有了一定了解 首先用notepad(不只是notepad) 编辑程序,将其放于masm文件夹下。然后,在dos环境下通过“masm 文件名.asm”命令生成汇编语言源程序文件(ASM文件)。源程序不能被计算机直接执行,所以要经过汇编程序加以翻译,这个翻译过程称为编译过程或汇编过程,就是把源程序文件翻译成二进制代码所表示的目标文件——OBJ文件。若源程序中有语法错误,则汇编结束后,汇编程序将指出源文件中的语法错误,就需要重新使用编辑程序来修正源程序中的语法错误,直至得到无误的ASM文件和OBJ文件。若无错,OBJ文件虽然已是二进制机器指令码的形式,但计算机仍不能直接执行,还必须用“link 文件名”命令把目标文件与库文件或其它目标文件进行链接和在内存中重新定位,生成可直接执行文件(EXE文件)。这时的EXE文件才可以由DOS装入内存储器并运行。通过“文件名.exe”命令即可运行程序。 (2)我对常用的dos功能调用有了一定了解 1号调用——单字符调用 通过键盘输入字符,将字符的ASCII码送入寄存器AL中,并在屏幕上显示该字符 2号调用——单字符显示 将DL寄存器中的字符送显示器显示 9号调用——显示字符串 将当前内存缓冲区中以‘$’结尾的字符串送显示器显示。 0a号调用——回车 0d号调用——换行 存在的问题: 分别输入两个数后,必须要分别将各自的高位屏蔽,如果不屏蔽结果就输出符号(错误的),但是我想既然是两个加起来不大于9的数相加,那是否屏蔽高位应该没有影响吧?这里有疑问

华中科技大学计算机操作系统实验报告

实验目的 掌握Linux操作系统的使用方法; 了解Linux系统内核代码结构; 掌握实例操作系统的实现方法。 一、实验要求 1、掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux 下的编程环境。 ●编一个C程序,其内容为实现文件拷贝的功能; ●编一个C程序,其内容为分窗口同时显示三个并发进程的运行结 果。要求用到Linux下的图形库。 2、掌握系统调用的实现过程,通过编译内核方法,增加一个新的系统调用。 另编写一个应用程序,调用新增加的系统调用。 实现的功能是:文件拷贝; 3、掌握增加设备驱动程序的方法。通过模块方法,增加一个新的设备驱动 程序,其功能可以简单。 实现字符设备的驱动; 4、了解和掌握/proc文件系统的特点和使用方法 ●了解/proc文件的特点和使用方法 ●监控系统状态,显示系统中若干部件使用情况 ●用图形界面实现系统监控状态。 5、设计并实现一个模拟的文件系统(选作) 二、实验一 1、编一个C程序,其内容为实现文件拷贝的功能 要实现文件拷贝功能,主要用到的函数是fopen、fputc、fgetc。 主要用到的头文件: #include #include 设计思路:由scanf函数获取2个文件名,根据其文件名和路径分别打开该2个文件,设置一个循环,从源文件复制1个字节到目 的文件,直到源文件指针到文件尾,最后关闭2个文件。 在可能出错的地方需要加上相应的报错代码,并输出错误信息,以方便调试。 理清楚设计思路后,首先搭建linux下编程环境。 安装gcc:sudo apt-get install build-essential 安装codeblocks:sudo apt-get install codeblocks 在集成开发环境Code::Blocks IDE下根据需求写出相应的源代码copy.c,将程序编译并生成exe可执行文件。 然后手动创建一个测试文件test.txt ,运行copy.exe文件,并输入

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

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

实验一汇编语言编程基础 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语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

微机原理实验报告

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

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

MOV AX,5000H MOV DI,AX MOV CX,0400H CLD REP MOVSB call buf1 mov cx,0ffh con1: push cx call disp pop cx loop con1 call buf2 con2: call disp jmp con2 DISP: MOV AL,0FFH ;00H MOV DX,PA OUT DX,AL MOV CL,0DFH ;20H ;显示子程序 ,5ms MOV BX,OFFSET BUF DIS1: MOV AL,[BX] MOV AH,00H PUSH BX MOV BX,OFFSET DATA1 ADD BX,AX MOV AL,[BX] POP BX MOV DX,PB OUT DX,AL MOV AL,CL MOV DX,PA OUT DX,AL PUSH CX DIS2: MOV CX,00A0H LOOP $ POP CX CMP CL,0FEH ;01H JZ LX1 INC BX ROR CL,1 ;SHR CL,1 JMP DIS1 LX1: MOV AL,0FFH MOV DX,PB OUT DX,AL RET

微机原理实验报告

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

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在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

微机系统的组装与配置实验报告

微机系统的组装与配置实验报告

计算机学院综合性实验 实验报告 课程名称微机与外设维护维修技术 实验学期 2015 至 2016 学年第 2 学期 学生所在院系计算机学院 年级 2013 专业班级计 学生姓名学号 2013 任课教师 实验成绩 计算机学院制

一、硬件拆卸部分 1、主板的型号及功能、性能说明: 主板是电脑系统中最大的一块电路板,主板上布满了各种电子元件、插槽、接口等。它为CPU、内存和各种功能(声、图、通信、网络、TV、SCSI等)卡提供安装插座(槽);为各种磁、光存储设备、打印机和扫描仪等I/O设备以及数码相机、摄像头、调制解调器等多媒体和通讯设备提供接口,实际上电脑通过主板将CPU等各种器件和外部设备有机地结合起来形成一套完整的系统。 主板的标准结构是根据主板上各元器件的布局排列方式、主板的尺寸大小及形状、所使用的电源规格等。 目前市场上PC的主板主要有ATX、Micro ATX和BTX等结构。 2、CPU的型号及功能、性能说明: 中央处理器(CPU)是一块超大规模集成电路芯片,它是整个计算机系统的核心。CPU主要包括运算器、控制器和寄存器三个部件。这三个部件相互协调,使他们可以进行分析、判断、运算并控制计算机各部分协调工作。其中运算器主要完成各种算术运算和逻辑运算;而控制器是指挥中心,控制运算器及其他部件工作,它能对指令进行分析,作出相应的控制;寄存器用来暂时存放运算中的中间结果或数据。 CPU的性能指标: 字长或位数; 主频、外频、FSB频率; 高速缓冲存储器; 指令扩展技术; CPU的制造工艺; CPU的核心代号; 超线程技术; 多核心技术; 虚拟化技术; 可信执行技术。 3、硬盘的型号及功能、性能说明: 硬盘主要是有固定面板、控制电路板、磁头组、盘面组、主轴电机、接口、及其附件组成。其中磁头组和盘片组件是构成硬盘的核心,它们被封装在硬盘的净化腔体内,包括浮动磁头组件、磁头驱动机构、盘片组、主轴驱动装置级读写控制电路几个部分。 温切斯特硬盘的特点:磁盘旋转,磁头径向运动,磁头悬浮在磁片上方,用磁存储信息。 磁盘技术: RAID技术(廉价磁盘冗余阵列),使用磁盘驱动器的方法,是将一组磁盘驱动器用某种逻辑方式联系起来,作为逻辑上的一个大容量磁盘驱动器来使用。(RAID0、RAID1、RAID0+1、RAID3、RAID5模式);

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

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

图1.5 程序流程图 1.1.4 实验程序如下(自己填写) SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV CX, 0010H MOV SI, 3100H MOV DI, 3200H CMP SI, DI JA A2 ADD SI, CX ADD DI, CX DEC SI DEC DI A1: MOV AL, [SI] MOV [DI], AL DEC SI DEC DI DEC CX JNE A1

相关文档
最新文档