微型计算机原理与接口技术实验课讲义Word格式文档下载.docx

上传人:b****4 文档编号:18449993 上传时间:2022-12-16 格式:DOCX 页数:63 大小:886.32KB
下载 相关 举报
微型计算机原理与接口技术实验课讲义Word格式文档下载.docx_第1页
第1页 / 共63页
微型计算机原理与接口技术实验课讲义Word格式文档下载.docx_第2页
第2页 / 共63页
微型计算机原理与接口技术实验课讲义Word格式文档下载.docx_第3页
第3页 / 共63页
微型计算机原理与接口技术实验课讲义Word格式文档下载.docx_第4页
第4页 / 共63页
微型计算机原理与接口技术实验课讲义Word格式文档下载.docx_第5页
第5页 / 共63页
点击查看更多>>
下载资源
资源描述

微型计算机原理与接口技术实验课讲义Word格式文档下载.docx

《微型计算机原理与接口技术实验课讲义Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微型计算机原理与接口技术实验课讲义Word格式文档下载.docx(63页珍藏版)》请在冰豆网上搜索。

微型计算机原理与接口技术实验课讲义Word格式文档下载.docx

-D范围显示所指定范围内的内容,指定范围为起始地址和终止地址;

-D显示从上一个D命令的最后一个单元后面的80个字节的内容,或者在D未使用过的情况下,显示DS:

0100为起始的内容。

例如,按指定范围显示存储单元内容的方法为:

-d100120

其中100120给出显示存储单元的范围。

这里没有指定段地址,D命令自动显示DS段的内容。

2修改存储单元内容的命令

输入命令E,有两种格式如下:

-E地址[内容表]用指定的内容表去修改指定地址开始的存储器中内容

例如

-EDS:

120F3A5’XYZ’96

表示用F3、A5、’X’、’Y’、’Z’、96共6个字节代替了DS:

120至DS:

125中的内容

-E地址逐个单元修改内容

-ECS:

100屏幕显示为:

18E4:

010089.-

用户可以键入’78’,修改次内容,再键入空格键显示下一个内容,不修改时可用空格键跳过,逐个修改存储器内容,直到回车键结束。

3填入命令格式F

-F范围(内容表)将内容表中内容填入所指定的范围。

-F18E4:

0200L1000

将0200H单元开始的16个字节全部填入0。

若内容表中字节数超过指定范围,则忽略超过项,若内容表中字节数小于指定范围,则反复填入,直到填满所有单元为止。

4检查和修改寄存器命令R

格式有三种:

-R显示CPU内所有寄存器内容和标志位状态

-R寄存器名显示和修改某一个寄存器内容

-RAX屏幕显示:

AX1200

AX当前内容为1200,若不修改则按回车键,否则键入要修改的内容。

如:

-RBX

BX0369

059F

则把BX寄存器的内容修改为059F。

RF显示和修改标志位内容

例如-RF屏幕显示:

OVDNEINGZRACPECY—

此时,如不修改其内容可按Enter键,否则,可键入欲修改的内容,如:

OVDNEINGZRACPECY—PONZDINV

即可,可见键入的顺序可以是任意的。

5运行命令G

格式为:

-G[=地址1][地址2[地址3…]]

其中,地址1指定了运行的起始地址,如不指定则从当前的CS:

IP开始运行。

后面的地址为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。

6跟踪命令T

格式有两种:

-T=地址单条指令跟踪,执行指定地址的一条指令,并显示CPU所有寄存器内容,标志位的状态,及下条指令的地址和内容。

若命令中没有指定地址,则从当前CS:

IP开始执行。

-T=地址N,N为多条指令跟踪,从指定地址开始执行指令,共执行指定的N条后停止,每执行一条就显示CPU中所有寄存器内容,标志位的状态及下条指令的地址和内容。

⑦汇编命令A

-A地址

该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中,必须注意:

debug把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明。

⑧反汇编命令U

有两种格式:

-U地址从指定地址开始,反汇编32个字节,若没有指定地址,则接着上一个U命令继续向下反汇编,若没有用过U命令,则从CS:

0100开始反汇编。

-U范围对指定范围的存储单元反汇编,可指定起始地址,结束地址,也可指定起始地址及长度。

例如:

–U1CE2:

0110011A或–U1CE2:

0110L0B效果是一样的。

⑨命名命令N

命名命令N常与装入命令L一起使用

–N路径\文件名.exe

–L

可把文件名.exe装入存储器。

⑩退出debug命令Q

–Q

它退出debug,返回DOS。

例:

在debug中,汇编一段程序,实现两个32位数的加法,12345678H+3456789AH=?

用E命令在DS:

0120存储单元开始存放78H、56H、34H、12H、9AH、78H、56H、34H,

用汇编命令A编写一段程序如下:

Movax,[0120h]

Movdx,[0122h]

Addax,[0124h]

Adcdx,[0126h]

Mov[0128h],ax

Mov[012ah],dx

然后用G命令运行该程序段

G=起始地址终止地址

最后用D命令查看结果

DDS:

0120012C

练习2:

在debug中,汇编一段程序,实现两个32位数的减法,3456789Ah-12345678h=?

实验二汇编语言程序的编辑与调试实验

一、实验目的

1、学会用EDIT编写汇编语言程序;

2、学会使用MASM产生目标文件和可执行文件;

3、掌握在DEBUG下汇编程序的调试。

二、实验仪器

三、实验内容与步骤

1、内容

在BCD1单元中,压缩存放着两个BCD码。

现编写一程序,将压缩的BCD码转变成两个非压缩的BCD码,分别存放到result和result+1单元中。

2、步骤

①在EDIT环境下编写能实现上述功能的汇编源程序,并以文件名为BCD1.ASM保存。

②执行MASM.EXE文件,检查程序中是否有语法错误;

若有错,则返回到EDIT中,打开源程序进行修改,直到无语法错误为止,同时产生相应的目标文件。

③执行LINK.EXE文件,产生相应的可执行文件;

④打开DEBUG调试环境,装入相应的可执行文件,并用反汇编命令检查可执行文件是否已装入;

⑤单步运行每条指令,观察运行结果;

⑥整个程序运行完成后,到指定的存储单元中观察运行结果是否符合要求。

四、思考题

1、执行MASM.EXE文件的主要作用是什么?

2、在实验中,你用了哪些DEBUG命令,目的是什么?

 

实验三综合程序的设计、编制及调试

1、掌握分支、循环、子程序调用等基本的程序结构;

2、学习综合程序的设计、编制及调试。

在数据段的buffer字单元中存放着一个16位二进制数,编写一个程序把buffer中的内容用十六进制显示出来。

①程序流程图

②按流程图编写程序

③上机调试,实现题目要求的功能

四、思考题

编程显示F000:

0000存储单元的内容,显示形式为:

“F000:

000090”。

画出流程图,写出源代码,上机调试通过,实现相应功能。

附件1:

实验源程序

datasegment

string1db0dh,0ah,'

pleaseinput16-bitbinarynumber'

0dh,0ah,'

$'

string2db0dh,0ah,'

yourinputhasmistake.'

string3db0dh,0ah,'

doyouwanttoinputagain(Y/N)?

'

string4db'

binarytohexadecimal:

dataends

stacksegmentstack

dw256dup(?

toplabelword

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

movax,stack

movss,ax

movsp,offsettop

next:

movdx,offsetstring1

movah,09h

int21h

movcx,16

xorbx,bx

rota:

shlbx,1

movah,01h

andal,0fh

jzrota1

cmpal,1

jnzagain

orbx,01h

rota1:

looprota

movdl,'

B'

movah,02h

movdl,0dh

movdl,0ah

jmpl4

again:

movdx,offsetstring2

l5:

movah,08h

andal,0dfh

cmpal,'

Y'

jznext

jmpexit

l4:

callhtodis

movdx,offsetstring3

jmpl5

exit:

movah,4ch

htodisproc

movdx,offsetstring4

movch,4

l2:

movcl,4

rolbx,cl

moval,bl

addal,30h

cmpal,39h

jbel1

addal,07h

l1:

calldisplay

decch

jnzl2

H'

movah,2

ret

htodisendp

displayproc

movdl,al

displayendp

codeends

endstart

附件2:

思考题源程序

stringdb0dh,0ah,'

pleaseinputaddress'

string1db0dh,0ah,0dh,0ah,'

doyouwanttoinputagain(y/n)?

'

movdx,offsetstring

movah,9

callreci

moves,bx

:

movsi,bx

movdi,8

movbl,es:

[si]

callhtodisb

incsi

decdi

jnzl5

-'

l6:

movbl,es:

jnzl6

movah,8

jnzexit

jmpnext

htodisbproc

movch,2

l3:

rolbl,cl

jbel4

movdl,al

jnzl3

htodisbendp

reciproc

l8:

shlbx,cl

movah,1

subal,30h

cmpal,9h

jbel7

subal,7

l7:

orbl,al

jnzl8

reciendp

codeends

实验四DOS系统功能调用实验

1、学习DOS系统功能调用的使用方法;

2、重点掌握键盘输入和输出显示的DOS系统功能调用的方法。

三、实验内容和步骤

无论是用户程序还是DOS系统本身,都离不开输入/输出操作,为了方便用户,PCDOS系统将输入/输出管理程序编成一系列子程序,不仅系统可以使用,用户也可以像调子程序一样方便地使用它们。

调用系统提供的子程序,通常称为系统功能调用。

DOS系统功能调用的方式是通过执行一条软中断指令INT21H实现的。

当寄存器AH中设置不同的值时,该指令将完成不同的功能,我们称AH中设置的内容为功能号。

通过下面的编程练习,学会DOS系统功能1、2、7、8、9、A的调用方法。

从键盘上输入一组字符串,将其送入输入缓冲区,把字符串中小写的字符转换成大写后,再显示这组字符串。

流程图如下:

2、步骤

①按流程图编写程序

②上机调试,实现题目要求的功能

思考题:

把上题中输入字符串中的最小字符和最大字符分别显示出来。

附件:

pleaseinputstring'

0ah,0dh,'

doyouwanttoinputstringagain(Y/N)?

bufferdb40h,?

buffer1db40hdup(?

data

start:

movax,data

movdx,offsetbuffer

movah,0ah

moval,buffer+1

cbw

movbx,offsetbuffer1

addbx,ax

movcx,ax

movbyteptr[bx],'

movdx,offsetbuffer1

moval,[bx]

a'

jbl2

z'

jal2

subal,20h

movbyteptr[bx],al

incbx

loopl1

movdl,0dh

movdx,offsetstring2

jzagain

实验五综合编程练习

综合运用分支、循环、子程序和DOS系统功能调用编写程序;

1、内容

从键盘输入一个夹带有若干个空格的字符串,显示第一个空格的位置(thefirstblankpositionis:

)和字符串长度(thelengthofthestringis:

),开始的空格不计算在字符串长度内。

若输入的字符串中没有空格,显示“thereisn’tanyblankinthestring”提示,同时显示该字符串的长度。

完成后提示是否还要继续(doyouwanttoinputstringagain(Y/N)?

),按Y继续,其他退出。

编写一程序实现上述功能。

自己画出流程图,写出符合要求的程序,上机调试通过。

如若要显示字符串中空格的个数,上述程序如何修改。

假定有一最大长度为80个字符的字符串已定义为字节变量STRING,试编写一程序段,找出第一个空格的位置(00H至4FH表示),并显示出来。

统计该串不包括前导空的实际长度(不包括回车符),统计结果显示出来。

string2db80

db?

string3db80dup(?

string4db0dh,0ah,'

thestringhasnotblank'

string5db0dh,0ah,'

string6db0dh,0ah,'

thefirstblankpositionis:

string7db0dh,0ah,'

thelengthofthestringis:

dw256dup(?

moval,string2+1

moval,'

cmpal,string3[bx]

jzl1

loopnext

;

*************************************

movdx,offsetstring6

************************************

movdx,offsetstring7

calllength1

movdx,offsetstring5

movah,4ch

***********************************

pushcx

movdl,bl

anddl,0fh

cmpdl,9

adddl,30h

jmpdis1

adddl,37h

dis1:

movah,2

popcx

length1proc

pushbx

pushsi

pushax

movbl,string2+1

movsi,offsetstring3

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

当前位置:首页 > 小学教育 > 小升初

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

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