内蒙古工业大学微机原理实验指导答案.docx

上传人:b****5 文档编号:3867759 上传时间:2022-11-26 格式:DOCX 页数:21 大小:211.44KB
下载 相关 举报
内蒙古工业大学微机原理实验指导答案.docx_第1页
第1页 / 共21页
内蒙古工业大学微机原理实验指导答案.docx_第2页
第2页 / 共21页
内蒙古工业大学微机原理实验指导答案.docx_第3页
第3页 / 共21页
内蒙古工业大学微机原理实验指导答案.docx_第4页
第4页 / 共21页
内蒙古工业大学微机原理实验指导答案.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

内蒙古工业大学微机原理实验指导答案.docx

《内蒙古工业大学微机原理实验指导答案.docx》由会员分享,可在线阅读,更多相关《内蒙古工业大学微机原理实验指导答案.docx(21页珍藏版)》请在冰豆网上搜索。

内蒙古工业大学微机原理实验指导答案.docx

内蒙古工业大学微机原理实验指导答案

 

微型计算机原理与应用实验指导书实验程序报告

 

学院:

信息工程学院班级:

电子11-1班姓名:

LXY

学号:

2011202030

 

实验一编辑、汇编、连接、调试程序的使用

程序设计A设计要求

(1)将FFFFH送到AX,SI,DI,BP,DS,ES寄存器

(2)编程(利用DEBUG调试程序,每执行一次T命令后,记录相关寄存器内容,并判断是否正确。

)程序如下:

CODESEGMENT

ASSUMECS:

CODE

STARTPROCFAR

STT:

PUSHDS

SUBAX,AX

PUSHAX

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

MOVAX,0FFFFH

MOVSI,AX

MOVDI,AX

MOVBP,AXMOVDS,AX

MOVES,AX

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

RET

STARTENDP

CODEENDS

ENDSTT

B、设计要求

(1)将1,2,3,4,5分别送到数据段偏移地址为1000H,1001H,1002H,1003H,1004H,单元中。

(2)编程

DATASEGMENT

ORG1000H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE

STARTPROCFAR

STT:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

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

MOVAL,1

MOVDS:

[1000H],AL

MOVAL,2

MOVDS:

[1001H],AL

MOVAL,3

MOVDS:

[1002H],AL

MOVAL,4

MOVDS:

[1003H],AL

MOVAL,5

MOVDS:

[1004H],AL

RET

STARTENDP

CODEENDSENDSTT

实验二、加法程序设计

设计内容A、设计要求

(1)在数据段偏移地址1000H处开始,连续存放有3字节的数据(高位对应高地址,低位对应低地址),1003H处开始连续存放有两字节的数据(高对高,低

对低),求这两数据之和,并将结果放在流量数据之后。

(eg:

123456H+789AH=12

ACF0H)

(2)编程

DATASEGMENT

ORG1000H

H1DB56H,34H,12H,9AH,78H

H2DB3DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

STT:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATAMOVDS,AX

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

MOVSI,1000H

MOVDI,1003H

MOVBX,1005H

MOVCX,2

CLC

LP:

MOVAL,[SI]

MOVDL,[DI[

ADCAL,DL

MOV[BX],AL

INCSI

INCDI

INCBX

LOOPLP

MOVAL,[SI]

ADCAL,00

MOV[BX],AL

RET

CODEENDP

STARTENDS

ENDSTT

C、设计要求

(1)用串传送指令把A程序的数据块偏移地址1000H开始的区域传递到同一数据段的偏移地址为1003H开始的区域。

用DEBUG查看运行结果。

(2)编程

DATASEGMENTORG1000H

H1DB56H,34H,12H,9AH,78H

ORG1003H

H2DB56H,34H,12H,9AH,78H,0F0H,0ACH,12H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

STT:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AXMOVES,AX

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

LP:

MOVSI,1000HMOVDI,1003H

MOVSBMOVCX,8

INCSI

INCDI

LOOPLP

RET

STARTENDPCODEENDS

ENDSTT

实验三、查表程序设计

A、设计要求

(1)在数据段偏移地址1000H处,存放0—9的平方值,任给一个自然数M在1010H单元中(0≤M≤9),查表求出M的平方值,并将结果放入1011单元中。

(2)编程

DATASEGMENT

ORG1000H

TABDB00,01,04,09,16,25,36,49,64,81ORG1010HMDB4,?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

STT:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETTAB

MOVAL,M

XLAT

MOVDS:

[1011H],AL

RET

STARTENDP

CODEENDS

ENDSTT

B、设计要求

(1)编程实现:

将BCD数00H—99H顺序存放到当前数据1000H开始的内存单元中,用DEBUG查看运行结果。

(2)编程

DATASEGMENT

ORG1000H

HDB100DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

STT:

PUSHDSSUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVSI,1000H

MOVAL,0

MOVCX,100

LP:

MOV[SI],AL

ADDAL,1

DAA

INCSI

LOOPLP

RET

STARTENDP

CODEENDS

ENDSTART

实验四、码制的变换程序设计

B、设计要求

(1)把BX中的“1”的个数放到AL中,“0”的个数放到AH中,并在屏幕上分别显示0和1的个数

(2)编程

DATASEGMENT

ORG1000H

HDB000FH

ORG1010H

WDB100DUP(?

DATAENDS

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

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

STT:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

CALLZ1

CALLZ2

CALLZ3

CALLZ4

RET

STARTENDP

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

Z1PROCNEAR

MOVBX,DS:

[1000H]

MOVCX,16

MOVAX,0

CLC

KK:

RCRBX,1

JCAA

ADDAH,1JMPBB

AA:

ADDAL,1BB:

LOOPKK

MOVDS:

[1010H],AH

MOVDS:

[1020H],AL

RET

Z1ENDP

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

Z2PROCNEAR

PUSHAX

PUSHBX

MOVAX,DS:

[1010H]

MOVAH,0

MOVBX,000AH

DIVBL

ADDAH,30H

ADDAL,30H

MOVDS:

[1041H],AH

MOVDS:

[1040H],AL

POPBXPOPAX

RET

Z2ENDP

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

Z3PROCNEAR

PUSHAX

PUSHBX

MOVAX,DS:

[1020H]

MOVAH,0

MOVBX,000AH

DIVBL

ADDAH,30H

ADDAL,30H

MOVDS:

[1044H],AH

MOVDS:

[1043H],AL

POPBX

POPAX

RET

Z3ENDP

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

Z4PROCNEAR

PUSHAX

PUSHCX

PUSHDX

PUSHSI

MOVCX,6

MOVSI,1040H

LP:

MOVDL,[SI]

MOVAH,2

INT21H

INCSI

LOOPLP

POPSI

POPDX

POPCX

POPAX

RET

Z4ENDP

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

CODEENDS

ENDSTT

实验五、求最大值的程序设计

A、设计要求

(1)从首地址为BUF开始存放的10个字节无符号数,从这些数中找出最大值,存入MAX中。

(2)编程

DATASEGMENT

ORG1000H

BUFDB01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

STT:

PUSHDSSUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVSI,1000H

MOVCX,9

MOVAL,[SI]

INCSI

MOVAL,0

LP:

CLC

CMPAL,[SI]

JNCAA

MOVAL,[SI]

AA:

INCSI

LOOPLP

MOVDS:

[2000H],AL

RET

STARTENDP

CODEENDS

ENDST1

实验六、软件综合设计

一、实验目的:

1.熟悉并且掌握汇编语言的基本指令及编程方法。

2.掌握用汇编语言编写程序的思路和设计方法。

3.熟练掌握DEBUG调试程序的方法。

二、实验内容:

1.设计课题:

模拟温度测量软件设计

2设计要求:

(1)将首地址为1000H开始存放的10个单字节数据,进行数字滤波。

实现方法是:

找出其中最大值(设子程序名为:

ZMAX)和最小值(设子程序名为:

ZMIN)

并从中10个数中去掉最大值和最小值,将剩余的的8个数取平均值后,存放在

1010H单元中。

(设子程序名为:

Z1)

(2)将存放在1010H单元中的十六进制数的整数部分转换成非压缩的BCD码,存放在1020H开始的存储单元中(低位在前,高位在后)。

(设子程序名为:

Z2)

(3)将存放在1020H开始的非压缩BCD码转换成ASCII码。

存放在1030H开始的存储单元中。

(低位在前,高位在后)(设子程序名为:

Z3)

(4)将存放在1030H开始的ASCII码送CRT显示(高位在前,低位在后)。

(设子程序名为:

Z4)

3、程序结构及编程

DATASEGMENT

ORG1000H

LDB9AH,66H,2EH,1AH,5DH,3CH,36H,88H,52H,22H

ORG1010H

AVERDB?

ORG1020H

XDB3DUP(?

ORG1030H

YDB3DUP(?

ORG1050H

HDB4DUP(?

ORG1060H

H1DB100DUP(?

DATAENDS

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

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

STT:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

CALLZMAX

CALLZMIN

CALLZ1

CALLZ2

CALLZ3

CALLZ4

RET

STARTENDP

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

ZMAXPROCNEAR

PUSHAX

PUSHCX

PUSHSI

MOVSI,1000H

MOVCX,0009H

MOVAL,[SI]LP1:

CLC

CMPAL,[SI]JNCAA

MOVAL,[SI]

AA:

INCSI

LOOPLP1

MOVDS:

[1050H],AL

POPSI

POPCX

POPAX

RET

ZMAXENDP

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

ZMINPROCNEAR

PUSHAX

PUSHCX

PUSHSI

MOVSI,1000H

MOVCX,0009H

MOVAL,[SI]

LP2:

CLC

CMPAL,[SI]

JCBB

MOVAL,[SI]

BB:

INCSI

LOOPLP2

MOVDS:

[1052H],AL

POPSI

POPCX

POPAX

RET

ZMINENDP

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

Z1PROCNEAR

PUSHAX

PUSHCX

PUSHSI

MOVSI,1000H

MOVCX,000AH

MOVAX,0000H

EE:

ADDAL,[SI]

ADCAH,0

INCSI

LOOPEE

SUBAX,DS:

[1050H]

SUBAX,DS:

[1052H]

MOVBL,0008H

DIVBL

MOVDS:

[1010H],AL

POPSI

POPCX

POPAX

RET

Z1ENDP

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

Z2PROCNEAR

PUSHAX

PUSHBX

MOVAX,DS:

[1010H]

MOVAH,0

MOVBX,000AH

DIVBL;

MOVDS:

[1020H],AH

MOVDS:

[1021H],AL

POPBX

POPAX

RET

Z2ENDP

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

Z3PROCNEAR

PUSHAX

PUSHBX

MOVAX,DS:

[1020H]

ADDAH,30H

ADDAL,30H

MOVDS:

[1030H],AX

POPBX

POPAX

RET

Z3ENDP

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

Z4PROCNEARPUSHAX

PUSHCX

PUSHDX

PUSHSI

MOVCX,3

MOVSI,1032H

LP3:

MOVDL,[SI]

MOVAH,2

INT21H

DECSI

LOOPLP3

POPSI

POPDX

POPCX

POPAX

RET

Z4ENDP

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

CODEENDS

ENDSTT

实验七、并行接口芯片的使用

(1)编程要求将开关k0——k7作为输入开关量从8255c口输入,发光二极管l0——l7作

为输出开关量从A口输出。

当某个开关闭合式时,对应发光二极管亮。

当按下键盘任意键时,退出程序。

(2)编程提示

CODESEGMENT

ASSUMECS:

CODE

STARTPROCFAR

ST1:

PUSHDS

SUBAX,AX

PUSHAX

MOVDS,AX

MOVDX,28BH

MOVAL,89H

OUTDX,AL

LL:

MOVDX,28AHINAL,DX

MOVDX,288H

OUTDX,AL

MOVAH,0BH

INT21H

CMPAL,0FFH

JNZLL

MOVAH,4CH

INT21H

CODEENDS

ENDST1

实验八、定时/技术器芯片的使用

1、实验内容一

(1)将计数器0设置为方式0,计数初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUTO电平变化。

(2)编程

CODESEGMENT

ASSUMECS:

CODE

STARTPROCFAR

ST1:

PUSHDS

SUBAX,AX

MOVDX,283H

MOVAL,36H

OUTDX,AL

MOVAL,3EH

MOVDX,280H

OUTDX,AL

MOVAL,03H

OUTDX,AL

MOVAL,08H

OUTDX,AL

AA:

MOVAL,280H

INAL,DX

ADDAL,30H

MOVDL,AL

MOVAH,2

INT21H

MOVAH,0BH

INT21H

CMPAL,0FFH

JCAA

RET

STARTENDP

CODEENDS

ENDST1

2、实验内容二

(1)将计数器0、计数器1分别设置方式为3,计数初值设为1000,用逻辑笔观察OUT1电平变化。

(2)编程

CODESEGMENT

ASSUMECS:

CODE

STARTPROCFAR

ST1:

PUSHDS

SUBAX,AX

MOVDX,283H

MOVAL,36H

OUTDX,AL

MOVAL,0E8H

MOVDX,280H

OUTDX,AL

MOVAL,03H

OUTDX,AL

MOVDX,283H

MOVAL,76H

OUTDX,AL

MOVAL,0E8H

MOVDX,281H

OUTDX,AL

MOVAL,03H

OUTDX,AL

MOVAX,4CH

INT21H

STARTENDP

CODEENDSENDST1

实验十一、D/A转换接口

实验内容

1、实验电路原理如图,将DAC0832片选端接地址290H。

DAC0832采用单缓冲方式,具有单极性输入端

2、编程验证DAC0832能够将数字量转换为与之成正比的模拟量填入下表。

3、编程产生以下波形(从Ub输出,用示波器观察波形)

(1)锯齿波参考流程图与编程(图11-2)

1、通过实验台左下角电位器RW1输出0—5V直流电压送入ADC0809通道0,

ADC0809的IN0口地址为298H,IN1口地址为299H。

2、编程验证ADC0809能够将模拟量转换为与之成正比的数字量。

3、通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0

(IN0),编程采集IN0输入的电压,在屏幕上显示出转换后的16进制数据。

编程如下:

codesegmentassumecs:

code

start:

movdx,298h;启动A/D转换器outdx,almovcx,0ffh;延时

delay:

loopdelay

inal,dx;从A/D转换器输入数据

movbl,al;将AL保存到BLmovcl,4shral,cl;将AL右移四位

calldisp;调显示子程序显示其高四位

moval,blandal,0fh

calldisp;调显示子程序显示其低四位

movah,02movdl,20h;加空格符

int21hmovdl,20hint21hpushdx

movah,06h;判断是否有键按下

movdl,0ffhint21hpopdxjestart;若没有转STARTmovah,4ch;退出int21hdispprocnear;显示子程序movdl,al

cmpdl,9;比较DL是否>9

jleddd;若不大于则为'0'-'9',加30h为其ASCII码

adddl,7;否则为'A'-'F',再加7ddd:

adddl,30h;显示movah,02int21hretdispendpcodeendsendstart

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1