微机原理和接口技术实验教学案.docx

上传人:b****1 文档编号:1902779 上传时间:2023-05-02 格式:DOCX 页数:40 大小:69KB
下载 相关 举报
微机原理和接口技术实验教学案.docx_第1页
第1页 / 共40页
微机原理和接口技术实验教学案.docx_第2页
第2页 / 共40页
微机原理和接口技术实验教学案.docx_第3页
第3页 / 共40页
微机原理和接口技术实验教学案.docx_第4页
第4页 / 共40页
微机原理和接口技术实验教学案.docx_第5页
第5页 / 共40页
微机原理和接口技术实验教学案.docx_第6页
第6页 / 共40页
微机原理和接口技术实验教学案.docx_第7页
第7页 / 共40页
微机原理和接口技术实验教学案.docx_第8页
第8页 / 共40页
微机原理和接口技术实验教学案.docx_第9页
第9页 / 共40页
微机原理和接口技术实验教学案.docx_第10页
第10页 / 共40页
微机原理和接口技术实验教学案.docx_第11页
第11页 / 共40页
微机原理和接口技术实验教学案.docx_第12页
第12页 / 共40页
微机原理和接口技术实验教学案.docx_第13页
第13页 / 共40页
微机原理和接口技术实验教学案.docx_第14页
第14页 / 共40页
微机原理和接口技术实验教学案.docx_第15页
第15页 / 共40页
微机原理和接口技术实验教学案.docx_第16页
第16页 / 共40页
微机原理和接口技术实验教学案.docx_第17页
第17页 / 共40页
微机原理和接口技术实验教学案.docx_第18页
第18页 / 共40页
微机原理和接口技术实验教学案.docx_第19页
第19页 / 共40页
微机原理和接口技术实验教学案.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理和接口技术实验教学案.docx

《微机原理和接口技术实验教学案.docx》由会员分享,可在线阅读,更多相关《微机原理和接口技术实验教学案.docx(40页珍藏版)》请在冰点文库上搜索。

微机原理和接口技术实验教学案.docx

微机原理和接口技术实验教学案

微机原理与接口技术

 

物理与电子工程学院

罗长更

显示程序实验

实验目的

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

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

(3)熟悉Tdpit集成环境和调试器的使用。

实验内容及说明

   一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。

本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。

实验中可使用DOS功能调用(INT21H)。

(1)显示单个字符输出

入口:

AH=02H

调用参数:

DL=输出字符

(2)显示字符串

入口:

AH=09H

调用参数:

DS:

DX=串地址,’$’为结束字符

(3)键盘输入并回显

入口:

AH=01H

返回参数:

AL=输出字符

(4)返回DOS系统

入口:

AH=4CH

调用参数:

AL=返回码

 实验步骤

(1)运行Tdpit软件,选择文件菜单,点击新建,进入一个源文件编辑界面。

根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1所示。

(2)使用编译菜单中的编译和链接对实验程序进行汇编、连接。

(3)使用编译菜单中的运行,运行程序,观察运行结果。

(4)使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。

(5)更改数据区中的数据,检查程序的正确性。

参考程序清单

DATASEGMENT

MESDB'Showaashex:

',0AH,0DH,'$'

SDDB'a'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES;显示提示信息

MOVAH,09H

INT21H

 MOVDI,OFFSETSD

MOVAL,DS:

[DI]

ANDAL,0F0H;取高4位

SHRAL,4

图1

 

CMPAL,0AH;是否是A以上的数

JBC2

ADDAL,07H

C2:

ADDAL,30H

MOVDL,AL;显示字符

MOVAH,02H

INT21H

MOVAL,DS:

[DI]

ANDAL,0FH;取低4位

CMPAL,0AH

JBC3

ADDAL,07H

C3:

ADDAL,30H

MOVDL,AL;显示字符

MOVAH,02H

INT21H

MOVAX,4C00H;返回DOS

INT21H

CODEENDS

ENDSTART

数据传送实验

 

实验目的

(1)熟悉Tdpit集成环境和调试器的使用。

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

 实验内容

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

实验步骤

(1)运行Tdpit软件,选择文件菜单,点击新建进行实验程序的编写。

(2)使用编译菜单中的编译和连接对实验程序进行汇编、连接。

(3)使用编译菜单中的运行,运行程序,观察运行结果。

(4)使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。

(5)更改数据区中的数据,考察程序的正确性。

参考程序:

DDATASEGMENT;定义源数据段

MSRDB"HELLO,WORLD!

$"

LENEQU$-MSR

DDATAENDS 

EXDASEGMENT;定义附加数据段

MSDDBLENDUP(?

EXDAENDS

 MYSTACKSEGMENTSTACK;定义堆栈段

DW20DUP(?

MYSTACKENDS

CODESEGMENT;定义代码段

ASSUMECS:

CODE,DS:

DDATA,ES:

EXDA

START:

MOVAX,DDATA

MOVDS,AX;装载数据段寄存器

MOVAX,EXDA

MOVES,AX;装载附加数据段寄存器

MOVSI,OFFSETMSR;设置SI

MOVDI,OFFSETMSD;设置DI

MOVCX,LEN

NEXT:

MOVAL,[SI];开始传输数据

MOVES:

[DI],AL

INCSI

INCDI

DECCX

JNZNEXT

PUSHES

POPDS;将附加段寄存器指向的段值赋给数据段寄存器

MOVDX,OFFSETMSD

MOVAH,9

INT21H

MOVAX,4C00H;利用DOS功能调用返回DOS状态

INT21H

CODEENDS

ENDSTART

将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:

MOVBX,0

MOVCX,LEN

NEXT:

MOVAL,MSR[BX]

MOVES:

MSD[BX],AL

INCBX

LOOPNEXT

运算类程序实验

实验目的

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

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

 实验内容及说明

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

表1

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

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

实验利用累加器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个自然数中的奇数之和等于N2,即:

1+3+5=9=32

1+3+5+7=16=42

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

   若要做S的开方运算,那麽就可以从S中逐次减去自然数中的奇数1,3,5,7…,一直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。

本实验要求利用减奇法计算0040H的开平方值,并将运算结果显示在屏幕上。

 

实验步骤

(1)运行Tdpit软件,选择文件菜单进行实验程序的编写。

(2)使用编译菜单中的编译和连接对实验程序进行汇编、连接。

(3)使用编译菜单中的运行,运行程序,观察运行结果。

(4)使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。

(5)更改数据区中的数据,考察程序的正确性。

参考程序

两个字节数据相加

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

MES1DB'Theresultis:

$'

XDB03H

YDB05H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAH,00H

MOVSI,OFFSETX

MOVAL,[SI]

ADDAL,[SI+01H]

ANDAL,0FH

MOVBL,AL

MOVDX,OFFSETMES1

MOVAH,09H

INT21H

MOVAX,BX

CALLSHOW

MOVAX,4C00H

INT21H

SHOWPROCNEAR

MOVAL,BL

ANDAL,0F0H;取高4位

SHRAL,4

CMPAL,0AH;是否是A以上的数

JBC2

ADDAL,07H

C2:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

MOVAL,BL

ANDAL,0FH;取低4位

CMPAL,0AH

JBC3

ADDAL,07H

C3:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

RET

ENDP

CODEENDS

ENDSTART

;A4-1.asm

;二进制双精度加法运算

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

MES1DB'Theresultis:

$'

XLDW65A0H

XHDW0015H

YLDW0B79EH

YHDW0021H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES1

MOVAH,09H

INT21H

MOVAX,XL

ADDAX,YL

MOVBX,AX

MOVAX,XH

ADCAX,YH

PUSHBX

CALLSHWORD

POPBX

MOVAX,BX

CALLSHWORD

MOVAX,4C00H

INT21H

SHWORDPROCNEAR

MOVBL,AH

CALLSHOW

MOVBL,AL

CALLSHOW

RET

ENDP

SHOWPROCNEAR

PUSHAX

PUSHDX

MOVAL,BL

ANDAL,0F0H;取高4位

SHRAL,4

CMPAL,0AH;是否是A以上的数

JBC2

ADDAL,07H

C2:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

MOVAL,BL

ANDAL,0FH;取低4位

CMPAL,0AH

JBC3

ADDAL,07H

C3:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

POPDX

POPAX

RET

ENDP

CODEENDS

ENDSTART

;A4-2.asm

;十进制数的BCD码减法运算

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

MES1DB'Theresultis:

$'

XDW0400H

YDW0102H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAH,00H

SAHF

MOVSI,OFFSETX

MOVAL,[SI]

SBBAL,[SI+02H]

DAS

PUSHF

ANDAL,0FH

POPF

MOVBL,AL

INCSI

MOVAL,[SI]

SBBAL,[SI+02H]

DAS

PUSHF

ANDAL,0FH

POPF

MOVBH,AL

MOVDX,OFFSETMES1

MOVAH,09H

INT21H

MOVAX,BX

CALLSHWORD

MOVAX,4C00H

INT21H

SHWORDPROCNEAR

MOVBL,AH

CALLSHOW

MOVBL,AL

CALLSHOW

RET

ENDP

SHOWPROCNEAR

PUSHAX

PUSHDX

MOVAL,BL

ANDAL,0F0H;取高4位

SHRAL,4

CMPAL,0AH;是否是A以上的数

JBC2

ADDAL,07H

C2:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

MOVAL,BL

ANDAL,0FH;取低4位

CMPAL,0AH

JBC3

ADDAL,07H

C3:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

POPDX

POPAX

RET

ENDP

CODEENDS

ENDSTART

;A4-3.asm

;乘法运算

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

MES1DB'Theresultis:

$'

ERRMESDB'Errorexist!

$'

DATA1DB00H,02H,03H,04H,05H

DATA2DB03H

RESULTDB06HDUP(0)

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETDATA2

MOVBL,[SI]

ANDBL,0FH

CMPBL,09H

JNCERROR

MOVSI,OFFSETDATA1

MOVDI,OFFSETRESULT

MOVCX,0005H

A1:

MOVAL,[SI+04H]

ANDAL,0FH

CMPAL,09H

JNCERROR

DECSI

MULBL

AAM

ADDAL,[DI+05H]

AAA

MOV[DI+05H],AL

DECDI

MOV[DI+05H],AH

LOOPA1

MOVDX,OFFSETMES1

MOVAH,09H

INT21H

MOVCX,06H

MOVSI,OFFSETRESULT

A2:

CALLSHOW

MOVDL,20H

MOVAH,02H

INT21H

INCSI

LOOPA2

MOVAX,4C00H

INT21H

ERROR:

MOVDX,OFFSETERRMES

MOVAH,09H

INT21H

MOVAX,4C00H

INT21H

SHOWPROCNEAR

MOVAL,DS:

[SI]

ANDAL,0F0H;取高4位

SHRAL,4

CMPAL,0AH;是否是A以上的数

JBC2

ADDAL,07H

C2:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

MOVAL,DS:

[SI]

ANDAL,0FH;取低4位

CMPAL,0AH

JBC3

ADDAL,07H

C3:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

RET

ENDP

CODEENDS

ENDSTART

;A4-4.asm

;用减奇法开平方运算

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DDATASEGMENT

MES1DB'Thesquarerootof$'

MES2DB'is:

$'

NUMBDW0040H

DDATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DDATA

START:

MOVAX,DDATA

MOVDS,AX

MOVDX,OFFSETMES1

MOVAH,09H

INT21H

MOVSI,OFFSETNUMB

MOVAX,[SI]

CALLSHWORD

MOVDX,OFFSETMES2

MOVAH,09H

INT21H

MOVAX,[SI]

MOVCL,00H

MOVDX,0001H

A1:

SUBAX,DX

JBA2

INCCL

ADDDX,02H

JMPA1

A2:

MOVBL,CL

CALLSHOW

MOVAX,4C00H

INT21H

SHWORDPROCNEAR

MOVBL,AH

CALLSHOW

MOVBL,AL

CALLSHOW

RET

ENDP

SHOWPROCNEAR

PUSHAX

PUSHDX

MOVAL,BL

ANDAL,0F0H;取高4位

SHRAL,4

CMPAL,0AH;是否是A以上的数

JBC2

ADDAL,07H

C2:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

MOVAL,BL

ANDAL,0FH;取低4位

CMPAL,0AH

JBC3

ADDAL,07H

C3:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

POPDX

POPAX

RET

ENDP

CODEENDS

ENDSTART

分支程序设计实验

实验目的

掌握分支程序的设计方法。

 

实验内容及说明

   程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图1所示。

本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。

图1图2

实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。

在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。

当循环结束操作时,将BH,BL分别送屏幕显示。

参考实验流程如图2所示。

实验步骤

(1)运行Tdpit软件,选择文件菜单编写实验程序;提供8字节的数据:

0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H。

(2)使用编译菜单中的编译和连接对实验程序进行汇编、连接。

(3)使用编译菜单中的运行,运行程序,观察运行结果。

(4)更改数据区中的数据,考察程序的正确性。

参考程序

;A5.asm

;分支程序设计实验

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DDATASEGMENT

MES1DB'Theleastnumberis:

$'

MES2DB0AH,0DH,'Thelargestnumberis:

$'

NUMBDB0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H

DDATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DDATA

START:

MOVAX,DDATA

MOVDS,AX

MOVSI,OFFSETNUMB

MOVCX,0008H

JCXZA4

MOVBH,[SI]

MOVBL,BH

A1:

LODSB;AL=DS:

[SI],SI=SI+1

CMPAL,BH

JBEA2

MOVBH,AL

JMPA3

A2:

CMPAL,BL

JAEA3

MOVBL,AL

A3:

LOOPA1

A4:

MOVDX,OFFSETMES1;showmes1

MOVAH,09H

INT21H

MOVAL,BL;showtheleastnumber

ANDAL,0F0H;getthehighest4bits

SHRAL,4

CMPAL,0AH

JBC2

ADDAL,07H

C2:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

MOVAL,BL

ANDAL,0FH;getthelowest4bits

CMPAL,0AH

JBC3

ADDAL,07H

C3:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

MOVDX,OFFSETMES2;showmes2

MOVAH,09H

INT21H

MOVAL,BH;showthelargestnumber

ANDAL,0F0H;getthehighest4bits

SHRAL,4

CMPAL,0AH

JBC22

ADDAL,07H

C22:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

MOVAL

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

当前位置:首页 > 自然科学 > 物理

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

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