微机原理课程设计素材1.docx

上传人:b****4 文档编号:5421141 上传时间:2023-05-08 格式:DOCX 页数:34 大小:23.63KB
下载 相关 举报
微机原理课程设计素材1.docx_第1页
第1页 / 共34页
微机原理课程设计素材1.docx_第2页
第2页 / 共34页
微机原理课程设计素材1.docx_第3页
第3页 / 共34页
微机原理课程设计素材1.docx_第4页
第4页 / 共34页
微机原理课程设计素材1.docx_第5页
第5页 / 共34页
微机原理课程设计素材1.docx_第6页
第6页 / 共34页
微机原理课程设计素材1.docx_第7页
第7页 / 共34页
微机原理课程设计素材1.docx_第8页
第8页 / 共34页
微机原理课程设计素材1.docx_第9页
第9页 / 共34页
微机原理课程设计素材1.docx_第10页
第10页 / 共34页
微机原理课程设计素材1.docx_第11页
第11页 / 共34页
微机原理课程设计素材1.docx_第12页
第12页 / 共34页
微机原理课程设计素材1.docx_第13页
第13页 / 共34页
微机原理课程设计素材1.docx_第14页
第14页 / 共34页
微机原理课程设计素材1.docx_第15页
第15页 / 共34页
微机原理课程设计素材1.docx_第16页
第16页 / 共34页
微机原理课程设计素材1.docx_第17页
第17页 / 共34页
微机原理课程设计素材1.docx_第18页
第18页 / 共34页
微机原理课程设计素材1.docx_第19页
第19页 / 共34页
微机原理课程设计素材1.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理课程设计素材1.docx

《微机原理课程设计素材1.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计素材1.docx(34页珍藏版)》请在冰点文库上搜索。

微机原理课程设计素材1.docx

微机原理课程设计素材1

微机原理上机实验报告

学习资料2007-01-2416:

40:

04阅读2062评论1字号:

大中小

★实验目的

1. 熟练掌握汇编语言程序设计的方法及上机步骤。

2. 掌握算术运算中,十进制数调整指令的应用。

3. 掌握子程序的设计方法。

4. 掌握DOS功能的调用方法。

★实验仪器

586微机1台

★实验内容及程序

1.编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。

编程要求与提示:

[1]两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。

[2]和以压缩十进制数的形式存入SUM以下单元。

[3]将和送到屏幕显示部分功能的实现采用子程序的形式。

[4]实验步骤如下:

a.用全屏幕编辑软件建立源程序。

b.用masm.exe汇编程序对源程序进行汇编,形成目标程序。

c.用link.exe连接程序对目标程序进行连接形成可执行文件。

d.用DEBUG对连接通过的可执行程序进行调试。

流程图:

见图1

程序如下:

STACKSEGMENTSTACK'STACK'

DW100HDUP(?

STACKENDS

DATASEGMENT

ADD1DD12678532H;加数以组合十进制形式存放在双字单元

ADD2DD21736543H

SUMDD?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

LEASI,ADD1

LEADI,ADD2

LEABX,SUM

MOVAL,[SI]

ADDAL,[DI];最低位的一个字节相加

DAA;加法组合BCD码调整

MOV[BX],AL;结果存放在SUM第一个字节

MOVAL,[SI+1];第二个字节相加

ADCAL,[DI+1]

DAA

MOV[BX+1],AL

MOVAL,[SI+2]

ADCAL,[DI+2]

DAA

MOV[BX+2],AL

MOVAL,[SI+3]

ADCAL,[DI+3]

DAA

MOV[BX+3],AL

MOVDL,00;最高位字节有进位则显示"01"

ADCDL,00

CALLDISPSUM

MOVAH,4CH;返回DOS

INT21H

DISPSUMPROCNEAR;结果显示子程序

PUSHAX

PUSHBX

PUSHCX

PUSHSI

MOVSI,4

PUSHDX

MOVCX,5

LAB:

PUSHCX

PUSHBX

MOVAL,DL

MOVBL,DL

MOVCL,4;显示高位字节

SHRAL,CL

ADDAL,30H

MOVAH,02

MOVDL,AL

INT21H;显示一位字符

ANDBL,0FH;显示低位字节

ADDBL,30H

MOVAH,02

MOVDL,BL

INT21H

POPBX

POPCX

DECSI

MOVDL,[BX][SI];结果显示

LOOPLAB

POPDX

POPSI

POPCX

POPBX

POPAX

RET

DISPSUMENDP

CODEENDS

ENDSTART

2.有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。

编程要求及提示:

[1]参加排序的数据及个数由学生自己定义。

[2]要将排序前的数组和排序后的数组在屏幕上显示出来。

[3]实验步骤同内容一。

流程图:

见图2.

程序如下:

STACKSEGMENTSTACK

DB256DUP(?

STACKENDS

DATASEGMENT

DATA1DW4031H,3859H,0245H,1111H,0A231H,0FFFFH

STRING1DB'Originalnumbers:

',0DH,0AH,'$'

STRING2DB'Thenumbersfromlargetosmall:

',0DH,0AH,'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

LEADX,STRING1;显示人机交互提示

MOVAH,09H

INT21H

MOVCX,6

LEASI,DATA1;显示初始数据

L1:

MOVAX,[SI]

ADDSI,2

CALLDISPAX

CALLDISPCR

LOOPL1

MOVCX,5

LEASI,DATA1

ADDSI,10;指针指向最后一个数据

LP1:

PUSHCX

PUSHSI

LP2:

MOVAX,[SI];数据排序

CMPAX,[SI-2]

JBENOXCHG

XCHGAX,[SI-2];交换操作

MOV[SI],AX

NOXCHG:

DECSI;不需排序时继续

DECSI

LOOPLP2

POPSI

POPCX

LOOPLP1

LEADX,STRING2;显示字符串

MOVAH,09H

INT21H

MOVCX,6;显示排好序后数据

LEASI,DATA1

L2:

MOVAX,[SI]

ADDSI,2

CALLDISPAX

CALLDISPCR

LOOPL2

MOVAH,4CH

INT21H

DISPALPROC;显示AL内容子程序

PUSHAX

PUSHCX

PUSHDX

PUSHAX

MOVCL,4;处理高位十六进制数

SHRAL,CL

CALLCHANG

MOVAH,02H

MOVDL,AL

INT21H;显示一位字符

POPAX

ANDAX,0FH;处理低位十六进制数

CALLCHANG

MOVAH,02H

MOVDL,AL

INT21H

POPDX

POPCX

POPAX

RET

DISPALENDP

CHANGPROC;十六进制数转换为ASCII码

CMPAL,10

JNGECHANG1

ADDAL,7

CHANG1:

ADDAL,30H

RET

CHANGENDP

DISPAXPROC;显示AX内容子程序

XCHGAL,AH

CALLDISPAL

XCHGAH,AL

CALLDISPAL

RET

DISPAXENDP

DISPCRPROC;回车换行子程序

PUSHAX

PUSHDX

MOVAH,2

MOVDL,0AH

INT21H

MOVAH,2

MOVDL,0DH

INT21H

POPDX

POPAX

RET

DISPCRENDP

CODEENDS

ENDSTART

3.编写建立、写入、读出磁盘文件的程序要求:

(1)设计一个包括:

建立文件、写入文件、读出文件的主菜单。

(2)能用输入的文件名,在磁盘建立文件。

(3)向已有文件中写入数据。

(4)读出已有文件的内容(ascii码或16进制数)。

下面是我的一篇文件操作代码,你修一下就可以用了。

includekcsj.mac

.modelsmall

.386

.stack200h

publicprog1

.data

menudb30dup(''),'1.Displaytextfile',0ah,0dh

db30dup(''),'2.Copytextfile',0ah,0dh

db30dup(''),'3.Deletetextfile',0ah,0dh

db30dup(''),'4.Theend',0ah,0dh

db30dup(''),'Pleaseselectone(1~4):

','$'

prompt1db0ah,0dh,'Filename:

$'

prompt2db0ah,0dh,'Linesofpage(1~25):

$'

FNAMEdb15,?

15dup('');存放文件名的缓冲区

out1db0ah,0dh,'Cannotopenfile!

$'

out2db0ah,0dh,'Cannotreadfile!

$'

out3db0ah,0dh,'Cannotcreatfile!

$'

out4db0ah,0dh,'Cannotwritefile!

$'

out5db0ah,0dh,'Cannotdeletefile!

$'

out6db0ah,0dh,'Thefilehasbeencopyed!

$'

out7db0ah,0dh,'Thefilehasbeendeleted!

$'

bufferdb?

endcodedb0;错误标志

end1db0;结束标志

code1dw?

;原文件的代号

code2dw?

;新建文件的代号

signdb0

ask1db0ah,0dh,'Inputsourcefilename:

$'

ask2db0ah,0dh,'Inputdestfilename:

$'

rowdb23

infodb'PressESCtoquit,ptochangepage,anykeytocontinue!

$'

.code

prog1procfar

init

callmainshow

L1:

movah,1

int21h

cmpal,'1'

jedisplay

cmpal,'2'

jecopy

cmpal,'3'

jedelete

jmprtn1

display:

callfdisp

callmainshow

movend1,0

mov[row],23

movendcode,0

jmpL1

copy:

callfcopy

callmainshow

movendcode,0

movsign,0

jmpL1

delete:

callfdel

callmainshow

jmpL1

rtn1:

ret

prog1endp

mainshowprocnear

scroll0

cursor10,0

strdispmenu

ret

mainshowendp

fdispprocnear;分页显示

strdispprompt1

callfopen

scroll0;清屏

cursor0,0;置光标

cmpendcode,1

jnecont

movah,7

int21h

jmpext0

cont:

movbx,code1

callfread

cmpendcode,1

jeext1

callfshow;显示

cmpend1,1

jeext1

jmpcont

ext1:

movah,3eh;关闭文件

movbx,code1

int21h

ext0:

movendcode,0

ret

fdispendp

fopenprocnear;打开文件

callin_name

movah,3dh

moval,0

int21h

jncnext

movendcode,1

strdispout1

ret

next:

movbx,ax

movcode1,ax

ret

fopenendp

in_nameprocnear;输入文件名

leadx,FNAME

movah,0ah

int21h

leabx,FNAME+2

movah,0

moval,FNAME+1

addbx,ax

movbyteptr[bx],0

adddx,2

ret

in_nameendp

freadprocnear;读取文件

movah,3fh

movcx,1

leadx,buffer

int21h

jncpast

strdispout2

jmpexit

past:

cmpax,0

jeexit

ret

exit:

movah,3eh

int21h

movendcode,1

ret

freadendp

fshowprocnear;显示文件

movdl,[buffer]

movah,2

int21h

movah,3

movbh,0

int10h

cmpdh,[row]

jaed1

ret

d1:

strdispinfo

d2:

movah,7

int21h

cmpal,0

jzd2

cmpal,1bh;按ESC退出

jzd4;退出关闭文件endcode=1

cmpal,70h;按P提示输入每页行数

jnzd3

strdispprompt2

callchtonum

mov[row],al

d3:

scroll0

cursor0,0

ret

d4:

movend1,1

ret

fshowendp

chtonumprocnear

movbx,0

newchar:

movah,1;输入数字并转换为十进制

int21h

subal,30h

jlgoon

cmpal,9

jggoon

cbw

xchgax,bx

movcx,10d

mulcx

xchgax,bx

addbx,ax

jmpnewchar

goon:

moval,bl;行数传给AL

ret

chtonumendp

fcopyprocnear;文件拷贝

scroll0

cursor0,0

strdispask2

callfcreat

cmpendcode,1

jeover

movcode2,ax

strdispask1

callfopen

cmpendcode,1

jeetn0

again:

callfread

cmpendcode,1

jeetn0

movsign,1

pushbx

cmpax,0

jenext2

movcx,ax

movbx,code2

movah,40h

int21h

popbx

jncagain

strdispout4

ret

next2:

movah,3eh

movbx,code1

int21h

etn0:

movah,3eh

movbx,code2

int21h

cmpsign,1

jneover

strdispout6

over:

movah,7

int21h

ret

fcopyendp

fcreatprocnear;创建文件

callin_name

movah,3ch

movcx,00

int21h

jncnext1

movendcode,1

strdispout3

next1:

ret

fcreatendp

fdelprocnear;删除文件

scroll0

cursor0,0

strdispprompt1

callin_name

movah,41h

int21h

cmpax,0

jnzquit

strdispout5

movah,7

int21h

ret

quit:

strdispout7

movah,7

int21h

ret

fdelendp

endprog1

4.运行符合题目要求,按“q”键退出。

;按字母“S”画一个用不同颜色填充的三角形;

;按字母“Z”画一个用不同颜色填充且带有边框图案的矩形;

;

datasegment

info1db0dh,0ah,'pleasechoosetheletterS,Z,q:

'

db0dh,0ah,'(inputqtoquit)$'

x1dw140

y1dw60

x2dw500

y2dw400

colordw0c07h

dataends

stacksegmentstack

db200dup(0)

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

mainprocfar

movax,data

movds,ax

movax,12h

int10h

input:

leadx,info1

movah,9

int21h

@in:

movah,0

int16h

cmpah,10h;按键码'q'和"Q"

jzexit

cmpah,1fh;'s'和"S"

jzsa

cmpah,2ch;'z'和"Z"

jnz@in

zhen:

callzheng

callfill

jmpexit

sa:

callsan

exit:

movah,1

int21h

movah,4ch

int21h

ret

mainendp

;画三角块

sanprocnear

moval,1

a0:

movdx,1

movbp,1

movcx,320

a1:

pushcx

pushbp

a2:

movah,12

pushax

int10h

popax

inccx

subbp,1

jnza2

popbp

addbp,2

popcx

incdx

cmpdx,20

jbeQ1

incal

Q1:

cmpdx,40

jbeQ2

incal

Q2:

deccx

jnea1

ret

sanendp

zhengprocnear

;******画矩形******

movcx,x1

movdx,y1

movsi,x2

movdi,y2

cmpcx,si

jbeQ3

xchgcx,si

movx1,cx

movx2,si

Q3:

cmpdx,di

jbeQ5

xchgdx,di

movy1,dx

movy2,di

Q5:

;画矩形边框

PUSHDX

PUSHCX

@31C:

MOVAX,color

INT10H

INCCX

CMPCX,SI

JNZ@31C

@326:

INT10H

INCDX

CMPDX,DI

JNZ@326

POPSI

@32E:

MOVAX,color

INT10H

DECCX

CMPCX,SI

JNZ@32E

POPDI

@339:

INT10H

DECDX

CMPDX,DI

JNZ@339

RET

fill:

movax,0c01h

movcolor,ax

incx1

incy1

decx2

decy2

movsi,x2

movbp,y2

movdi,bp

shrdi,1

movdx,y1

callCol

inccolor

adddi,100

callCol

movax,0c04h

movcolor,ax

adddi,100

callCol

ret

;填充色块

Col:

movcx,x1

_31C:

MOVAX,color

INT10H

INCCX

CMPCX,SI

JNZ_31C

incdx

cmpdx,di

jbeCol

ret

zhengendp

codeends

endmain

微机接口课程设计

实验报告

计算机31班

秦鹏程 

03055014

实验一  电子琴

一、实验目的

1. 通过D/A转换器产生模拟信号,使PC机作为简易电子琴

2. 了解利用数模转换器产生音乐的基本方法

二、实验内容

实验电路如图所示,8253的CLK0接1MHz时钟,GATE0接+5V,OUT0接8255的PA0,J1接喇叭,编程使计算机的数字键1、2、3、4、5、6、7作为电子琴按键,按下即发出相应的音阶。

三、编程提示

1.对于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出,给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波,对于音乐,每个音阶都有确定的频率。

各个音阶标称频率值:

音阶     频率:

(单位Hz)

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2