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

微机原理与接口技术实验

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

练习一系统认识实验

实验内容:

编写实验程序,将00H~0FH共16个数写入

内存3000H开始的连续16个存储单元中。

实验步骤:

1. 运行Wmd86软件,进入Wmd86集成开发环境。

2. 根据程序设计使用语言的不同,通过在“设置”

下拉列表来选择需要使用的语言及寄存器类型,这里

选择"汇编语言"和"16位寄存器",如图1所示。语

言及寄存器类型选择后,下次再启动软件将保持这次的修改不变。

3. 语言选择后,点击新建或按Ctrl+N组合键来新

建一个文档,如图2所示。默认文件名为Wmd861

4. 编写实验程序,如图3所示,并保存,此

时系统会提示输入新的文件名,输完后点击保存。

5. 点击,编译文件,若程序编译无误,再点击

进行链接,链接无误输出如图4所示的输出信息。

6. 连接PC与实验系统的通讯电缆,打开实验系统电源。

7. 编译、链接都正确并且上下位机通讯成功后,

就可以下载程序,联机调试了。可以通过端口列表中的“

端口测试”来检查通讯是否正常。点击下载程序。为编

译、链接、下载组合按钮,通过该按钮可以将编译、链接、下

载一次完成。下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。起始运行语句下会有一条绿色的背景。如图5所示。

8. 将输出区切换到调试窗口,使用D0000:3000命令查看内

存3000H起始地址的数据,如图6所示。存储器在初始状态时,默认数据为CC。

9. 点击按钮运行程序,待程序运行停止,观察程

序运行结果,仍使用命令D0000:3000来观察数据变化。如图7所示。

10. 也可以通过设置断点,断点显示如图8所示

,然后运行程序,当遇到断点时程序会停下来,然后观察数据。

可以使用E0000:3000来改变该地址单元的数据,如图9所示,输入11后,按“空格”键,可以接着输入第二个数,如22,结束输入按“回车”键。

参考程序:请参照随机软件中的Sample\ASM86\Wmd861.asm。

操作练习:

编写程序,将内存3500H单元开始的8个数据复制到3600H单元开始的

数据区中。通过调试验证程序功能,使用E命令修改3500H单元开始的

数据,运行程序后使用D命令查看3600H单元开始的数据。

SSTACK SEGMENT STACK ;定义堆栈段

DW 32 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:SSTACK

START: PUSH DS

XOR AX, AX

MOV DS, AX

MOV SI, 3000H ;建立数据起始地址

MOV CX, 16 ;循环次数

AA1: MOV [SI], AL

INC SI ;地址自加1

INC AL ;数据自加1

LOOP AA1

MOV AX,4C00H

INT 21H ;程序终止

CODE ENDS

END START

练习2

移位

data segment

da1 db 23h,98h,0d2h,00h,95h,7fh,0a6h,49h da2 db 8 dup(0)

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov si,offset da1

lea di,da2

mov cx,8

lp:mov al,[si]

mov[di],al

inc si

inc di

loop lp

mov ah,4ch

int 21h

code ends

end start

试验3 8数字累加和

data segment

da1 db 23h,98h,0d2h,00h,95h,7fh,0a6h,49h sum dw ?

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov si,offset da1

mov ax,0

mov cx,8

lp:add al,[si]

adc ah,0

inc si

loop lp

mov sum,ax

mov bx,ax

mov ah,4ch

int 21h

code ends

end start

4。比较数的最大最小

data segment

da1 db 23h,98h,0d2h,00h,95h,7fh,0a6h,49h db 09h,0eeh,00h,45h,98h,80h,35h,0dah

max db ?

min db?

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov si,offset da1

mov ax,0

mov cx,8

lp:add al,[si]

adc ah,0

inc si

loop lp

mov sum,ax

mov bx,ax

mov ah,4ch

int 21h

code ends

end start

5,无符号的数最大最小

data segment

da1 db 23h,98h,0d2h,00h,95h,7fh,0a6h,49h db 09h,0eeh,00h,45h,98h,80h,35h,0dah

max db ?

min db ?

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov si,offset da1

mov al,[si]

mov bl,al

inc si

mov cx,15

lp:cmp al,[si]

jae nextl

mov al,[si]

jmp next

nextl:cmp bl,[si]

jbe next

mov bl,[si]

next: inc si

loop lp

mov dh,al

mov dl,bl

mov max,al

mov min,bl

mov ah,4ch

int 21h

code ends

end start

6。带符号的数比较大小

data segment

da1 db 23h,98h,0d2h,00h,95h,7fh,0a6h,49h db 09h,0eeh,00h,45h,98h,80h,35h,0dah

max db ?

min db ?

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov si,offset da1

mov al,[si]

mov bl,al

inc si

mov cx,15

lp:cmp al,[si]

jge nextl

mov al,[si]

jmp next

nextl:cmp bl,[si]

jle next

mov bl,[si]

next: inc si

loop lp

mov dh,al

mov dl,bl

mov max,al

mov min,bl

mov ah,4ch

int 21h

code ends

end start

7。数中大于0,等于0,小于0的数的个数start:mov ax,data

mov ds,ax

mov si,offset da1

mov dl,0

mov bl,0

mov bh,0

mov cx,16

lp: mov al,[si]

cmp al,0

jle nextl

inc dl

jmp next

nextl:cmp al,0

jne next2

inc bl

jmp next

next2:inc bh

next: inc si

loop lp

mov m1,ah

mov m0,bl

mov mf,bh

mov ah,4ch

int 21h code ends

end start

8。ASIIA十进制数转化PUBLIC SADD

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

DATA SEGMENT

SADD DB 30H,30H,32H,35H,36H ;十进制数:00256 DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX, DATA

MOV DS, AX

MOV AX, OFFSET SADD

MOV SI, AX

MOV BX, 000AH

MOV CX, 0004H

MOV AH, 00H

MOV AL, [SI]

SUB AL, 30H

A1: IMUL BX

MOV DX, [SI+01]

AND DX, 00FFH

ADC AX, DX

SBB AX, 30H

INC SI

LOOP A1

A2: JMP A2

CODE ENDS

END START

10。两位十进制转换为ASCII码在屏幕上显示出来

DATA SEGMENT

dal db 9ch

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov al,dal

mov cl,4

shr al,cl

cmp al,0ah

jae next1

add al,30h

jmp next

next1:add al,37h

next:mov ah,02h

mov dl,al

int 21h

mov al,dal

and al,0fh

cmp al,0ah

jae next2

add al,30h

jmp next0

next2:add al,37h

next0: mov ah,02h

mov dl,al

int 21h

mov ah,4ch

int 21h

code ends

end start

12.用查表来转换完成

DATA SEGMENT

tab db 30h,31h,32h,33h,34h,35h,36h,37h db 38h,39h,41h,42h,43h,44h,45h,46h dal db 5fh

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

lea bx,tab

mov al,dal

mov cl,4

shr al,cl

xlat

next:mov ah,02h

mov dl,al

int 21h

mov al,dal

and al,0fh

cmp al,0ah

xlat next0: mov ah,02h

mov dl,al

int 21h

mov ah,4ch

int 21h

code ends

end start

12.数据排序

DATA SEGMENT

ARRAY DB 43,90,12,120,88,76

flag db -1

DATA ENDS

STACK SEGMENT PARA STACK'STACK'

DB 1024 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE ,SS:stack,DS:DATA SORT:MOV AX,DATA

MOV DS,AX

MOV BX,6

LP1:CMP FLAG,0

JE EXIT

dec bx

MOV CX,BX

MOV SI,0

MOV FLAG,0

LP2:MOV AL,ArrAY[SI]

CMP AL, ARRAY[Si+1]

JLE NEXT

XCHG AL,ARRAY[SI+1]

MOV ARRAY[SI],AL

MOV FLAG,-1

next:add si,1

loop lp2

jmp lp1

exit:mov ah,4ch

int 21h

code ends

end sort

后四个

8254定时/计数器应用实验

实验原理:

8254是Intel公司生产的可编程间隔定时器。是8253的改进型,比8253具有更优良的性能。8254具有以下基本功能:

(1)有3个独立的16位计数器;

(2)每个计数器可按二进制或十进制(BCD)计数;

(3)每个计数器可编程工作于6种不同工作方式;

(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz);(5)8254有读回命令(8253没有),除了可以读出当前

计数单元的内容外,还可以读出状态寄存器的内容;

(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:

其中,是输入时钟脉冲的频率,是输出波形的频率。

1 实验步骤:

(1)实验接线如图2所示;

(2)编写实验程序,经编译、链接无误后装入系统;

(3)运行程序,按动KK1+产生单次脉冲,观察实验现象;

(4)改变计数值,验证8254的计数功能。

===========================

; 文件名: A82541.ASM

; 功能描述: 通过对计数器0进行计数,计数初值为4,

; 当计数满后,产生正跳变触发中断,中断

; 程序显示M(每按5次输出一个M)

;======== ==========================

A8254 EQU 06C0H

B8254 EQU 06C2H

C8254 EQU 06C4H

CON8254 EQU 06C6H

SSTACK SEGMENT STACK

DW 32 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:SSTACK

START: PUSH DS

MOV AX, 0000H

MOV DS, AX

MOV AX, OFFSET IRQ7 ;取中断入口地址

MOV SI, 003CH ;中断矢量地址

MOV [SI], AX ;填IRQ7的偏移矢量

MOV AX, CS ;段地址

MOV SI, 003EH

MOV [SI], AX ;填IRQ7的段地址矢量

CLI

POP DS

;初始化主片8259

MOV AL, 11H

OUT 20H, AL ;ICW1

MOV AL, 08H

OUT 21H, AL ;ICW2

MOV AL, 04H

OUT 21H, AL ;ICW3

MOV AL, 01H

OUT 21H, AL ;ICW4

MOV AL, 6FH ;OCW1

OUT 21H, AL

;8254

MOV DX, CON8254

MOV AL, 10H ;计数器0,方式0

OUT DX, AL

MOV DX, A8254

MOV AL, 04H

OUT DX, AL

STI

AA1: NOP

JMP AA1

IRQ7: MOV DX, A8254

MOV AL, 04H

OUT DX, AL

MOV AX, 014D H (如果是F则为0146)实验室

INT 10H ;显示字符M

MOV AX, 0120H

INT 10H

MOV AL, 20H

OUT 20H, AL ;中断结束命令

IRET

CODE ENDS

END START

实验3

文件名: A82542.ASM

; 功能描述: 产生1ms方波,输入时钟为1MHz,使用计数器0

; 计数初值为03E8H

;= ===========================

A8254 EQU 06C0H

B8254 EQU 06C2H

C8254 EQU 06C4H

CON8254 EQU 06C6H

SSTACK SEGMENT STACK

DW 32 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:SSTACK

START: MOV DX, CON8254 ;8254

MOV AL, 36H ;计数器0,方式3

OUT DX, AL

MOV DX, A8254

MOV AL, 0E8H

OUT DX, AL

MOV AL, 03H

OUT DX, AL

AA1: NOP

JMP AA1

CODE ENDS

END START

实验4

8255并行接口实验

实验原理:

并行接口是以数据的字节为单位与I/O设备或被控制对象

之间传递信息。CPU和接口之间的数据传送总是并行的,即

可以同时传递8位、16位或32位等。8255可编程外围接口

芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B

、C三个并行接口,用+5V单电源供电,能在以下三种方式下

工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图1所示,825 5工作方式控制字和C口按位置位/复位控制字格式如图2所示。

1. 基本输入输出实验

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

实验步骤:

(1)实验接线图如图3所示,按图连接实验线路图;

(2)编写实验程序,经编译、连接无误后装入系统;

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

实验4 程序

;================================== ====

; 文件名: A82551.ASM

; 功能描述: A口为输入,B口为输出,将读入的数据输出显示

; IOY1

;=============================== ========

SSTACK SEGMENT STACK

DW 32 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:SSTACK

START: MOV DX, 0646H

MOV AL, 90H

OUT DX, AL

AA1: MOV DX, 0640H

IN AL, DX

CALL DELAY

MOV DX, 0642H

OUT DX, AL

JMP AA1

DELAY: PUSH CX

MOV CX, 0F00H

AA2: PUSH AX

POP AX

LOOP AA2

POP CX

RET

CODE ENDS

END START

实验5

2. 流水灯显示实验

使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,

循环显示,D15~D8与D7~D0正相反,由右向左,

每次仅点亮一个灯,循环显示。实验接线图如图4所示。

实验步骤:

(1)按图4连接实验线路图;

(2)编写实验程序,经编译、链接无误后装入系统;

(3)运行程序,观察LED灯的显示,验证程序功能;

(4)自己改变流水灯的方式,编写程序。

;====================== =============

; 文件名: A82552.ASM

; 功能描述: A口为输出,B口为输出,流水灯显示

;=======================================

SSTACK SEGMENT STACK

DW 32 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV DX, 0646H

MOV AL, 80H

OUT DX, AL

MOV BX, 8001H (0180反方向)实验6

AA1: MOV DX, 0640H

MOV AL, BH

OUT DX, AL

ROR BH, 1 (ROL右改左)实验7

MOV DX, 0642H

MOV AL, BL

OUT DX, AL

ROL BL, 1 (ROR 右改左)实验7

CALL DELAY

CALL DELAY

JMP AA1

DELAY: PUSH CX

MOV CX, 0F000H

AA2: PUSH AX

POP AX

LOOP AA2

POP CX

RET

CODE ENDS

END START

空了几个没写

键盘扫描及显示设计实验

实验内容:

将8255单元与键盘及数码管显示

单元连接,编写实验程序,

扫描键盘输入,并将扫描结果送数码管显示。

键盘采用4×4键盘,每个数码管

显示值可为0~F共16个数。

实验具体内容如下:将键盘进行编

号,记作0~F,当按下其中一个按键时,

将该按键对应的编号在一个数码

管上显示出来,当再按下一个按键时,

便将这个按键的编号在下一个数码

管上显示出来,数码管上可以显示

最近4次按下的按键编号。8255键盘及

显示实验参考接线图如图1所示。

参考程序:请参照随机软件中的Sample\ASM86\KEYLED.ASM或Sample\C86\CKEYLED.C文件。

实验步骤:

1. 按图1连接线路图;

2. 编写实验程序,检查无误后编译、连接并装入系统;

3. 运行程序,按下按键,观察数码管的显示,验证程序功能。

程序

;=================================================== ====

; 文件名: KeyLed.asm

; 功能描述: 键盘及数码管显示实验,通过8255控制。

; 8255的B口控制数码管的段显示,A口控制键盘列扫描

; 及数码管的位驱动,C口控制键盘的行扫描。

; 按下按键,该按键对应的位置将按顺序显示在数码管上。

;=================================================== ====

MY8255_A EQU 0600H

MY8255_B EQU 0602H

MY8255_C EQU 0604H

MY8255_CON E QU 0606H

SSTACK SEGMENT STACK

DW 16 DUP(?)

SSTACK ENDS

DATA SEGMENT

DTABLE D B 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START: MOV AX,DA TA

MOV DS,AX

MOV SI,3000H

MOV AL,00H

MOV [SI],AL ;清显示缓冲

MOV [SI+1],AL

MOV [SI+2],AL

MOV [SI+3],AL

MOV [SI+4],AL

MOV [SI+5],AL

MOV DI,3005H

MOV DX,MY8255_CON ;写8255控制字

MOV AL,81H

OUT DX,AL

BEGIN: CALL DIS ;调用显示子程序

CALL CLEAR ;清屏

CALL CCSCAN ;扫描

JNZ INK1

JMP BEGIN

INK1: CALL DIS

CALL DALLY

CALL DALLY

CALL CLEAR

CALL CCSCAN

JNZ INK2 ;有键按下,转到INK2

JMP BEGIN

;========================================

;确定按下键的位置

;========================================

INK2: MOV CH,0FEH

MOV CL,00H

COLUM: MOV AL,CH

MOV DX,MY8255_A

OUT DX,AL

MOV DX,MY8255_C

IN AL,DX

L1: TEST AL,01H ;is L1?

JNZ L2

MOV AL,00H ;L1

JMP KCODE

L2: TEST AL,02H ;is L2?

JNZ L3

MOV AL,04H ;L2

JMP KCODE

L3: TEST AL,04H ;is L3?

JNZ L4

MOV AL,08H ;L3

JMP KCODE

L4: TEST AL,08H ;is L4?

JNZ NEXT

MOV AL,0CH ;L4

KCODE: ADD AL,CL

CALL PUTBUF

PUSH AX

KON: CALL DIS

CALL CLEAR

CALL CCSCAN

JNZ KON

POP AX

NEXT: INC CL

MOV AL,CH

TEST AL,08H

JZ KERR

ROL AL,1

MOV CH,AL

JMP COLUM

KERR: JMP BEGIN

;======================================== ;键盘扫描子程序

;======================================== CCSCAN: MOV AL,00H

MOV DX,MY8255_A

OUT DX,AL

MOV DX,MY8255_C

IN AL,DX

NOT AL

AND AL,0FH

RET

;================ ========

;清屏子程序

;================= ==========

CLEAR: MOV DX,MY8255_B

MOV AL,00H

OUT DX,AL

RET

;======================================== ;显示子程序

;======================================== DIS: PUSH AX

MOV SI,3000H

MOV DL,0DFH

MOV AL,DL

AGAIN: PUSH DX

MOV DX,MY8255_A

OUT DX,AL

MOV AL,[SI]

MOV BX,OFFSET DTABLE

AND AX,00FFH

ADD BX,AX

MOV AL,[BX]

MOV DX,MY8255_B

OUT DX,AL

CALL DALLY

INC SI

POP DX

MOV AL,DL

TEST AL,01H

JZ OUT1

ROR AL,1

MOV DL,AL

JMP AGAIN

OUT1: POP AX

RET

;====== 延时子程序======

DALLY: PUSH CX

MOV CX,0006H

T1: MOV AX,009FH

T2: DEC AX

JNZ T2

LOOP T1

POP CX

RET

;======================================== ;存键盘值到相应位的缓冲中

;======================================== PUTBUF: MOV SI,DI

MOV [SI],AL

DEC DI

CMP DI,2FFFH

JNZ GOBACK

MOV DI,3005H

GOBACK: RET

CODE ENDS

END START

键盘移位修改

;================================================== =====

; 文件名: KeyLed.asm

; 功能描述: 键盘及数码管显示实验,通过8255控制。

; 8255的B口控制数码管的段显示,A口控制键盘列扫描

; 及数码管的位驱动,C口控制键盘的行扫描。

; 按下按键,该按键对应的位置将按顺序显示在数码管上。

;=================================================== ====

MY8255_A EQU 0600H

MY8255_B EQU 0602H

MY8255_C EQU 0604H

MY8255_CON E QU 0606H

SSTACK SEGMENT STACK

DW 16 DUP(?)

SSTACK ENDS

DATA SEGMENT

DTABLE D B 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START: MOV AX,DA TA

MOV DS,AX

MOV DX,MY8255_CON

MOV AL,80H

OUT DX,AL

MOV AL,0

LP: LEA BX,DTABLE

XLAT

MOV DX,MY8255_B

OUT DX,AL

MOV DX,MY8255_A

MOV AL,0

OUT DX,AL

INC AL

CALL DELAY

JMP LP

DELAY: MOV CX,0F000H

LOOP DELAY

RET

CODE ENDS

END START

试验。。

;================================================== =====

; 文件名: KeyLed.asm

; 功能描述: 键盘及数码管显示实验,通过8255控制。

; 8255的B口控制数码管的段显示,A口控制键盘列扫描

; 及数码管的位驱动,C口控制键盘的行扫描。

; 按下按键,该按键对应的位置将按顺序显示在数码管上。

;=================================================== ====

MY8255_A EQU 0600H

MY8255_B EQU 0602H

MY8255_C EQU 0604H

MY8255_CON E QU 0606H

SSTACK SEGMENT STACK

DW 16 DUP(?)

SSTACK ENDS

DATA SEGMENT

DTABLE D B 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START: MOV AX,DA TA

MOV DS,AX

MOV DX,MY8255_CON

MOV AL,80H

OUT DX,AL

MOV AL,0

MOV AL,AH

LP: LEA BX,DTABLE

XLAT

MOV DX,MY8255_B

OUT DX,AL

MOV DX,MY8255_A

MOV AL,0

OUT DX,AL

INC AH

MOV AL,AH

CMP AL,0FH

JBE BB

MOV AH,0

MOV AL,AH

BB: CALL DELAY

JMP LP

DELAY: MOV CX,0F000H

LOOP DELAY

RET

CODE ENDS

END START

试验下一个轮流出现那个数字肥媳妇知道了不MY8255_A EQU 0600H

MY8255_B EQU 0602H

MY8255_C EQU 0604H

MY8255_CON E QU 0606H

SSTACK SEGMENT STACK

DW 16 DUP(?)

SSTACK ENDS

DATA SEGMENT

DTABLE D B 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA START: MOV AX,DA TA

MOV DS,AX

MOV DX,MY8255_CON

MOV AL,80H

OUT DX,AL

MOV DX,MY8255_A

MOV AH,0

MOV AL,AH

OUT DX,AL

LP: LEA BX,DTABLE

XLAT

MOV DX,MY8255_B

OUT DX,AL

INC AH

MOV AL,AH

CMP AH,0FH

JBE BB

MOV AH,0

MOV AL,AH

BB: CALL DELAY

JMP LP

DELAY: MOV BX,0FFH

AA1: MOV CX,0FFFH AA: LOOP AA

DEC BX

JNZ AA1

RET

CODE ENDS

END START

微机原理与接口技术(第三版)课本习题答案

第二章 8086体系结构与80x86CPU 1.8086CPU由哪两部分构成它们的主要功能是什么 答:8086CPU由两部分组成:指令执行部件(EU,Execution Unit)和总线接口部件(BIU,Bus Interface Unit)。指令执行部件(EU)主要由算术逻辑运算单元(ALU)、标志寄存器FR、通用寄存器组和EU控制器等4个部件组成,其主要功能是执行指令。总线接口部件(BIU)主要由地址加法器、专用寄存器组、指令队列和总线控制电路等4个部件组成,其主要功能是形成访问存储器的物理地址、访问存储器并取指令暂存到指令队列中等待执行,访问存储器或I/O端口读取操作数参加EU运算或存放运算结果等。 2.8086CPU预取指令队列有什么好处8086CPU内部的并行操作体现在哪里答:8086CPU的预取指令队列由6个字节组成,按照8086CPU的设计要求,指令执行部件(EU)在执行指令时,不是直接通过访问存储器取指令,而是从指令队列中取得指令代码,并分析执行它。从速度上看,该指令队列是在CPU内部,EU从指令队列中获得指令的速度会远远超过直接从内存中读取指令。8086CPU 内部的并行操作体现在指令执行的同时,待执行的指令也同时从内存中读取,并送到指令队列。 5.简述8086系统中物理地址的形成过程。8086系统中的物理地址最多有多少个逻辑地址呢答:8086系统中的物理地址是由20根地址总线形成的。8086系统采用分段并附以地址偏移量办法形成20位的物理地址。采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部分构成,都是16位二进制数。通过一个20位的地址加法器将这两个地址相加形成物理地址。具体做法是16位的段基址左移4位(相当于在段基址最低位后添4个“0”),然后与偏移地址相加获得物理地址。由于8086CPU的地址线是20根,所以可寻址的存储空间为1M字节,即8086系统的物理地址空间是1MB。逻辑地址由段基址和偏移地址两部分构成,都是无符号的16位二进制数,程序设计时采用逻辑地址,也是1MB。 6.8086系统中的存储器为什么要采用分段结构有什么好处 答:8086CPU中的寄存器都是16位的,16位的地址只能访问64KB的内存。086系统中的物理地址是由20根地址总线形成的,要做到对20位地址空间进行访问,就需要两部分地址

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

实验要求 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源文件执行,程序自动运行。

微机原理实验指导书

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

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

(完整版)微机原理及接口技术(习题答案)

范文范例学习指导 第1章微机运算基础 习题和思考题 1.请完成以下计算: 174.66D=(10101110.10101)B=(AE. A8)H 10101110101.01011B=(1397.344)D=(575.58)H 4BCH=(010*********)B=()BCD 2.设字长为8位,X=(2A)16,当X分别为原码、补码、反码和无符号数的时候,其真值 是多少? 答:当X表示原码时,其真值为:+101010 当X表示补码时,其真值为:+101010 当X表示反码时,其真值为:+101010 当X表示无符号数数时,其真值为:00101010 3.设字长为8位,用补码形式完成下列计算,要求有运算结果并讨论是否发生溢出? 120+18 -33-37 -90-70 50+84 答:120+18 其补码形式分别为:(120)补=01111000 (18)补=00010010 01111000 + 00010010 10001010 由于C s=0 ,C p=1,因此有溢出,结果错误 -33-37 其补码形式为:(-33)补=11011111 (-37)补=11011011 11011111 +11011011 10111010 由于C s=1, C p=1,所以没有溢出,结果正确 -90-70 其补码形式为:(-90)补=10011100 (-70)补=10111010 10011100 +10111010 01010110 由于C s=1, C p=0,所以有溢出,结果错误 50+84

其补码形式为:(50)补=00110010 (84)补=01010100 00110010 +01010100 10000110 由于C s=0, C p=1,所以有溢出,结果错误 4.请写出下列字符串的ASCII码值。 My name is Zhang san. 4D 79 6E 61 6D 65 69 73 5A 68 61 6E 67 73 61 6E 2E 第2章 80X86微机系统 习题与思考题 1.微型计算机主要由哪些基本部件组成?各部件的主要功能是什么? 答:微型计算机主要由输入设备、运算器、控制器、存储器和输出设备组成。 各部件的功能分别是:1、输入设备通过输入接口电路将程序和数据输入内存;2、运算器是进行算术运算和逻辑运算的部件,它是指令的执行部件;3、控制器是计算机的指挥中心,它负责对指令进行译码,产生出整个指令系统所需要的全部操作的控制信号,控制运算器、存储器、输入/输出接口等部件完成指令规定的操作;4、存储器用来存放程序、原始操作数、运算的中间结果数据和最终结果数据; 5、输出设备是CPU通过相应的输出接口电路将程序运行的结果及程序、数据送到的设备; 2.微处理器的发展过程是什么? 答:微型计算机的发展过程是: 第一代(1946~1957)——采用电子管为逻辑部件,以超声波汞延迟线、阴极射线管、磁芯和磁鼓等为存储手段;软件上采用机器语言,后期采用汇编语言。 第二代(1957~1965)——采用晶体管为逻辑部件,用磁芯、磁盘作内存和外存;软件上广泛采用高级语言,并出现了早期的操作系统。 第三代(1965~1971)——采用中小规模集成电路为主要部件,以磁芯、磁盘作内存和外存;软件上广泛使用操作系统,产生了分时、实时等操作系统和计算机网络。 第四代(1971~至今)——采用大规模集成电路(LSI)、超大规模集成电路(VLSI)为主要部件,以半导体存储器和磁盘为内、外存储器;在软件方法上产生了结构化程序设计和面向对象程序设计的思想。 3.简述80486微处理器的基本结构。 书12页 4.80486微处理器的工作模式有几种?当CS内容为1000H,IP内容为7896H,求在实地址 模式下的物理地址为多少? 答:实模式和保护模式及虚拟8086模式。当CS内容为1000H,IP内容为7896H,在实地

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

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

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

微机原理实验指导书

微机原理及应用实验指导书 南京理工大学机械工程学院 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 1.什么是汇编语言,汇编程序,和机器语言? 答:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。 汇编语言是面向及其的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这种用符号代替机器语言的二进制码,就把机器语言编程了汇编语言。 使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。 2.微型计算机系统有哪些特点?具有这些特点的根本原因是什么? 答:微型计算机的特点:功能强,可靠性高,价格低廉,适应性强、系统设计灵活,周期短、见效快,体积小、重量轻、耗电省,维护方便。 这些特点是由于微型计算机广泛采用了集成度相当高的器件和部件,建立在微细加工工艺基础之上。 3.微型计算机系统由哪些功能部件组成?试说明“存储程序控制”的概念。 答:微型计算机系统的硬件主要由运算器、控制器、存储器、输入设备和输出设备组成。 “存储程序控制”的概念可简要地概括为以下几点: ①计算机(指硬件)应由运算器、存储器、控制器和输入/输出设备五大基本部件组成。 ②在计算机内部采用二进制来表示程序和数据。 ③将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,使计算机在不需要人工干预的情况下,自动、高速的从存储器中取出指令加以执行,这就是存储程序的基本含义。 ④五大部件以运算器为中心进行组织。 4.请说明微型计算机系统的工作过程。 答:微型计算机的基本工作过程是执行程序的过程,也就是CPU自动从程序存

放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。 5.试说明微处理器字长的意义。 答:微型机的字长是指由微处理器内部一次可以并行处理二进制代码的位数。它决定着计算机内部寄存器、ALU和数据总线的位数,反映了一台计算机的计算精度,直接影响着机器的硬件规模和造价。计算机的字长越大,其性能越优越。在完成同样精度的运算时,字长较长的微处理器比字长较短的微处理器运算速度快。 6.微机系统中采用的总线结构有几种类型?各有什么特点? 答:微机主板常用总线有系统总线、I/O总线、ISA总线、IPCI总线、AGP总线、IEEE1394总线、USB总线等类型。 7.将下列十进制数转换成二进制数、八进制数、十六进制数。 ①(4.75)10=(0100.11)2=(4.6)8=(4.C)16 ②(2.25)10=(10.01)2=(2.2)8=(2.8)16 ③(1.875)10=(1.111)2=(1.7)8=(1.E)16 8.将下列二进制数转换成十进制数。 ①(1011.011)2=(11.375)10 ②(1101.01011)2=(13.58)10 ③(111.001)2=(7.2)10 9.将下列十进制数转换成8421BCD码。 ① 2006=(0010 0000 0000 0110)BCD ② 123.456=(0001 0010 0011.0100 0101 0110)BCD 10.求下列带符号十进制数的8位基2码补码。 ① [+127]补= 01111111

微机原理与接口技术李珍香版十个实验程序说课讲解

微机原理与接口技术李珍香版十个实验程 序

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

微机原理与接口技术学习心得

本学期微机原理课程已经结束,关于微机课程的心得体会甚多。微机原理与接口技术作为一门专业课,虽然要求没有专业课那么高,但是却对自己今后的工作总会有一定的帮助。记得老师第一节课说学微机原理是为以后的单片机打基础,这就让我下定决心学好微机原理这门课程。 初学《微机原理与接口技术》时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。 《微机原理与接口技术》课程有许多新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的并不是很多。比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。 学习过程中,我发现许多概念很相近,为了更好地掌握,将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。比如:微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。微处理器是微型计算机的重要组成部分,它与微型计算机、微型计算机系统是完全不同的概念在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要,在重大的编程项目中应用最广泛。就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。而在某些时候,这种方法是最有效,最可靠的。 然而,事物总有两面性。其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较烦琐的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。在一些讲求效率的场合,并不可取。 汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总是从最简单基础的开始。那么学习高级语言也当然应当从汇编开始。学习汇

微机原理与接口技术实验指导书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、80486CPU进行算术和逻辑运算时,可处理的信息的长度为( D )。 A、32位 B、16位 C、8位 D、都可以 2、在下面关于微处理器的叙述中,错误的是( C ) 。 A、微处理器是用超大规模集成电路制成的具有运算和控制功能的芯片 B、一台计算机的CPU含有1个或多个微处理器 C、寄存器由具有特殊用途的部分内存单元组成,是内存的一部分 D、不同型号的CPU可能具有不同的机器指令 3、若用MB作为PC机主存容量的计量单位,1MB等于( B )字节。 A、210个字节 B、220个字节 C、230个字节 D、240个字节 4、运算器在执行两个用补码表示的整数加法时,判断其是否溢出的规则为( D )。 A、两个整数相加,若最高位(符号位)有进位,则一定发生溢出 B、两个整数相加,若结果的符号位为0,则一定发生溢出 C、两个整数相加,若结果的符号位为1,则一定发生溢出 D、两个同号的整数相加,若结果的符号位与加数的符号位相反,则一定发生溢出 5、运算器的主要功能是( C )。 A、算术运算 B、逻辑运算 C、算术运算与逻辑运算 D、函数运算 6、指令ADD CX,55H[BP]的源操作数的寻址方式是(D )。 A、寄存器寻址 B、直接寻址 C、寄存器间接寻址 D、寄存器相对寻址 7、设(SS)=3300H,(SP)=1140H,在堆栈中压入5个字数据后,又弹出两个字数据,则(SP)=(A ) A、113AH B、114AH C、1144H D、1140H 8、若SI=0053H,BP=0054H,执行SUB SI,BP后,则( C)。 A、CF=0,OF=0 B、CF=0,OF=1 C、CF=1,OF=0 D、CF=1,OF=1 9、已知(BP)=0100H,(DS)=7000H,(SS)=8000H,(80100H)=24H,(80101H)=5AH,(70100H)=01H,(70101H)=02H,指令MOV BX,[BP]执行后,(BX)=(D ) 。 A、0102H B、0201H C、245AH D、5A24H 10、实模式下80486CPU对指令的寻址由(A )决定。 A、CS,IP B、DS,IP C、SS,IP D、ES,IP 11、使用80486汇编语言的伪操作指令定义: VAL DB 2 DUP(1,2,3 DUP(3),2 DUP(1,0)) 则

微机原理实验指导

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

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

微机原理与接口技术课程设计报告题目:继电器控制实验设计 学院电子与信息工程学院 专业通信工程年级 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

微机原理与接口技术

第二章 8086系统结构 一、 8086CPU 的内部结构 1.总线接口部件BIU (Bus Interface Unit ) 组成:20位地址加法器,专用寄存器组,6字节指令队列,总线控制电路。 作用:负责从内存指定单元中取出指令,送入指令流队列中排队;取出指令所需的操作 数送EU 单元去执行。 工作过程:由段寄存器与IP 形成20位物理地址送地址总线,由总线控制电路发出存储器“读”信号,按给定的地址从存储器中取出指令,送到指令队列中等待执行。 *当指令队列有2个或2个以上的字节空余时,BIU 自动将指令取到指令队列中。若遇到转移指令等,则将指令队列清空,BIU 重新取新地址中的指令代码,送入指令队列。 *指令指针IP 由BIU 自动修改,IP 总是指向下一条将要执行指令的地址。 2.指令执行部件EU (Exection Unit) 组成:算术逻辑单元(ALU ),标志寄存器(FR ),通用寄存器,EU 控制系统等。 作用:负责指令的执行,完成指令的操作。 工作过程:从队列中取得指令,进行译码,根据指令要求向EU 内部各部件发出控制命令,完成执行指令的功能。若执行指令需要访问存储器或I/O 端口,则EU 将操作数的偏移地址送给BIU ,由BIU 取得操作数送给EU 。 二、 8088/8086的寄存器结构 标志寄存器 ALU DI DH SP SI BP DL AL AH BL BH CL CH ES SS DS CS 内部暂存器输入 / 输出控制 电路1432EU 控制系 统20位16位8086总线指令 队列总线 接口单元执行 单元 6 516位 属第三代微处理器 运算能力: 数据总线:DB

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

微机原理与接口技术》 上机报告 学院:机电学院指导教师:胡勇学号: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

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

昆明理工大学微机原理及程序设计 实验指导书 段绍米编 昆明理工大学信息工程与自动化学院 自动化系 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

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