pd32微机原理与接口技术标准实验报告.docx
- 文档编号:11329049
- 上传时间:2023-02-27
- 格式:DOCX
- 页数:60
- 大小:55.13KB
pd32微机原理与接口技术标准实验报告.docx
《pd32微机原理与接口技术标准实验报告.docx》由会员分享,可在线阅读,更多相关《pd32微机原理与接口技术标准实验报告.docx(60页珍藏版)》请在冰豆网上搜索。
pd32微机原理与接口技术标准实验报告
实验一数据传送(2
实验二算术运算(8
实验三代码转换(14
实验四程序的基本结构练习(20
实验五存储器(RAM6264扩展(25
实验六可编程并行接口(8255扩展(28
实验七可编程计数/定时器(8253扩展(34
实验八A/D、D/A转换(45
实验九可编程串行通信接口(8251扩展(53
实验一:
数据传送
实验学时:
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后,输入源程序
源程序
DATASEGMENTPARAPUBLIC‟DATA‟;数据段定义
DB512DUP(0
DATAENDS
STACKSEGMENTPARASTACK‟STACK‟;堆栈段定义
DB512DUP(?
STACKENDS
CODESEGMENTPARAPUBLIC‟CODE‟;代码段定义ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACKMAIN
PROCFAR;定义过程程序
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVSP,2000h
MOVAX,3000h
MOVBX,5000h
PUSHAX
PUSHBX
POPAX
POPBX
RET
MAINENDP;结束主要部分程序
CODEENDS;结束代码段
ENDMAIN;结束汇编
⑵用MASM程序产生.OBJ文件
操作如下:
E:
\SY86>MASMM1.ASMM1.OBJ
Microsoft(RMacroAssemblerVersion5.00
Copyright(CMicrosoftCorp1981-1985,1987.Allrightsreserved.ObjectFilename[HEXASC.OBJ]:
Sourcelisting[NUL.LST]:
Cross-reference[NUL.CRF]:
51576+385928Bytessymbolspacefree
0WarningErrors
0SevereErrors
以上说明汇编过程已经完成。
⑶用LINK程序产生EXE文件
操作如下:
E:
\SY86>LINKM1.OBJ
Microsoft(ROverlayLinkerVersion3.60
Copyright(CMicrosoftCorp1983-1987.Allrightsreserved.
RunFile[M1.EXE]:
ListFile[NUL.MAP]:
Libraries[.LIB]:
E:
\SY86>
LINK程序输出3个文件:
.EXE文件;.LIB库文件;.MAP列表文件。
连接过程全部完成,可以执行程序;
⑷在TD状态下用单步运行F8对M1.EXE文件进行调试,观察、记录结果。
E:
\SY86>TD
进入TD调试软件后用单步执行F8命令从首地址开始执行指令并观察相应变化。
运行结果如下:
―F8
AX=0000BX=0000CX=000DDX=0000SP=2000BP=0000SI=0000DI=0000DS=17F7ES=17F7SS=17F7CS=17F7IP=0103NVUPDIPLNZNAPONC17F7:
0103B80030MOVAX,3000
―F8
AX=3000BX=0000CX=000DDX=0000SP=2000BP=0000SI=0000DI=0000DS=17F7ES=17F7SS=17F7CS=17F7IP=0106NVUPDIPLNZNAPONC17F7:
0106BB0050MOVBX,5000
―F8
AX=3000BX=5000CX=000DDX=0000SP=2000BP=0000SI=0000DI=0000DS=17F7ES=17F7SS=17F7CS=17F7IP=0109NVUPDIPLNZNAPONC17F7:
010950PUSHAX
―F8
AX=3000BX=5000CX=000DDX=0000SP=1FFEBP=0000SI=0000DI=0000DS=17F7ES=17F7SS=17F7CS=17F7IP=010ANVUPDIPLNZNAPONC
17F7:
010A53PUSHBX
―F8
AX=3000BX=5000CX=000DDX=0000SP=1FFCBP=0000SI=0000DI=0000DS=17F7ES=17F7SS=17F7CS=17F7IP=010BNVUPDIPLNZNAPONC
17F7:
010B58POPAX
―F8
AX=5000BX=5000CX=000DDX=0000SP=1FFEBP=0000SI=0000DI=0000DS=17F7ES=17F7SS=17F7CS=17F7IP=010CNVUPDIPLNZNAPONC
17F7:
010C5BPOPBX
―F8
AX=5000BX=3000CX=000DDX=0000SP=2000BP=0000SI=0000DI=0000
DS=17F7ES=17F7SS=17F7CS=17F7IP=010DNVUPDIPLNZNAPONC
17F7:
010DF4HLT
―
2.用以上同样的方法,完成下列程序的调试:
编辑、汇编、连接、运行程序,观察、记录结果。
⑴输入以下汇编程序(分号“;”后面内容不需输入用单步运行执行程序,按分号后的要求记录结果。
源程序
DATASEGMENTPARAPUBLIC…DATA‟
DATAENDS
STACKSEGMENTPARASTACK…STACK‟
DB512DUP(?
STACKENDS
CODESEGMENTPARAPUBLIC…CODE‟
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,2000H;AH=20H
MOVDS,AX;AL=00HDS=2000H
MOVSS,AX;SS=2000HAX=2000H
MOVBX,2030H;BH=20HBL=30H
MOVSI,BX;SI=2030H
MOVDI,3040H;DI=3040H
MOVSI,DI;SI=3040H
MOVSP,50FFH;SP=50FFH
MOVDX,SP;DH=50HDL=0FFH
MOVCL,25;CL=25(19H
MOVBL,CL;CL=19HBL=19H
MOVAH,0F0H;AH=0F0H
MOVCH,AH;CH=0F0H
MOVBYTEPTR[DI],64;(DI=40H
MOVWORDPTR[SI],256;(SI=00H(SI+1=01H
MOVDL,[SI+1];DL=01H
MOVDH,1+[SI];DH=01H
MOVAL,1[SI];AL=01H
MOVWORDPTR[BX][SI],34;(BX+SI=22H(BX+SI+1=00H
MOV[BX+SI+4],BL;(BX+SI+4=19H
MOVBP,2[BX+DI];BP=0100H
MOV[BP],AL;(BP=01H
MOVAX,[BP][DI];AX=8B00H
MOVBL,AL;BL=00H
MOVES,BX;ES=2000H
PUSHBX;SP=50FDH(SP,SP+1=2000H
PUSHDI;SP=50FBH(SP,SP+1=3040H
POPCX;SP=50FDHCX=3040H
POPDX;SP=50FFHDX=2000H
XCHGAX,BP;AX=0101HBP=8B00H
XCHGDH,BL;DH=00HBL=20H
LAHF;FLAG=NVUPDIPLNZNAPONC
;FLAG=00000000
;AH=02H
SAHF;FLAG=NVUPDIPLNZNAPONC
;FLAG=00000000
;AH=02H
PUSHF;SP=50FDH(SP,SP+1=3102H
POPF;SP=50FDH
;FLAG=NVUPDIPLNZNAPONC
;FLAG=00000000
NOP
STARTENDP
CODEENDS
ENDSTART
⑵以文件名“E2”存盘;
⑶单步运行程序,每运行一条指令即检查相应结果并予以记录;
⑷利用断点运行、跟踪运行和全速运行等功能调试程序、运行程序并检查结果。
——运行结果:
各寄存器及内存变化如上。
五.思考题
常用的数据传送指令有几种类型?
试归纳并举例说明。
答:
常用的数据传送指令有四种类型:
1.通用数据传送指令
⑴MOVOPRD1,OPRD2
例:
MOVAX,2000H;AX=2000H
⑵压栈指令——PUSHOPRD
出栈指令——POPOPRD
例:
PUSHAX;SP=SP-2,(SP,SP+1=AX
POPAX;AX=(SP,SP+1,SP=SP+2
⑶交换指令——XCHGPORD1,OPRD2
例:
MOVAX,02FFH
MOVBP,0001H
XCHGAX,BP;AX=0001H,BP=02FFH
2.累加器专用传送指令
⑴输入、输出指令——IN、OUT
例:
INAX,DX;AX=(DX+1,DX
OUTDX,AX;(DX+1,DX=AX
⑵换码指令XLAT
例:
XLAT;AL=(BX+AL
3.地址传送指令
⑴有效地址送寄存器——LEAREG,SRC
例:
LEASI,DAT1;SI=ADDR(DAT1
⑵指针送DS和寄存器——LDSREG,SRC
例:
LDSDI,[BX];DI=(DS×16+BX,DS=(DS×16+BX+2⑶指针送ES和寄存器——LESREG,SRC
例:
LESDI,[BX];DI=(DS×16+BX,ES=(DS×16+BX+2
4.标志寄存器传送指令
⑴标志传送指令
例:
LAHF;AH←PSW的低字节
SAHF;PSW的低字节←AH
⑵标志进、出栈
例:
PUSHF;SP←SP-2,(SP+1,SP←PSWPOPF;PSW←(SP+1,SP,SP←SP+2
实验二:
算术运算
实验学时:
2
实验类型:
设计
实验要求:
必修
一.实验目的
1.验证算术运算基本指令;
2.正确使用加、减、乘、除程序,为设计综合算术运算程序打好基础;
3.学习独立编程;
4.深入学习、掌握TD调试软件的使用方法。
二.实验器材
PC机
三.实验内容及步骤
1.加、减法运算
⑴要求
调试以下程序
源程序
DATASEGMENTPARAPUBLIC…DATA‟
DATAENDS
STACKSEGMENTPARASTACK…STACK‟
DB512DUP(?
STACKENDS
CODESEGMENTPARAPUBLIC…CODE‟
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,2040H;AH=20H,AL=40H,CF=0
ADDAL,AH;AH=20H,AL=60H,CF=0
MOVCX,257;CX=0101H,CF=0
MOVSI,AX;SI=2060H,
SUBSI,CX;SI=1F5FH,CX=010H,CF=0
SUBCH,CL;CH=00H,CL=01H,CF=0
ADCAX,CX;AX=2061H,CX=0001H,CF=0
MOVWORDPTR[SI],513;(SI,SI+1=0201H
ADC[SI],AL;(SI,SI+1=0262H,CF=0
SBBAX,[SI];AX=1DFFH,CF=0
INCBYTEPTR[SI+1];(SI,SI+1=0362H
DECBYTEPTR[SI];(SI,SI+1=0361H
DAA;AH=1DH,AL=65H,AF=1,CF=1
AAA;AH=1EH,AL=0BH,AF=1,CF=1
RET
STARTENDP
CODEENDS
ENDSTART
——运行结果:
各寄存器及内存数据如上。
2.加、减法程序设计
⑴要求
试设计、编写程序,计算(UP1+(UP2-(UP3,结果存放在DX中。
如25+48-19=?
其中UP1、UP2、UP3的内容均为二位十进制数,并以非压缩BCD码格式存入存储器:
(UP1=0205H,(UP2=0408H,(UP3=0109H
UP1=2050H,UP2=2150H,UP3=2250H
源程序
DATASEGMENTPARAPUBLIC…DATA‟
DATAENDS
STACKSEGMENTPARASTACK…STACK‟
DB512DUP(?
STACKENDS
CODESEGMENTPARAPUBLIC…CODE‟
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,0000
MOVDX,0000
MOVSI,2050H
MOVDI,2150H
MOVBP,2250H
MOVWORDPTR[SI],0205H
MOVWORDPTR[DI],0408H
MOVWORDPTR[BP],0109H
MOVAL,[SI];送被加数低8位
ADDAL,[DI];低8位相加
AAA;加法ASCII调整
MOVDL,AL;暂存
MOVAL,[SI+1];送被加数高8位
ADCAL,[DI+1];带进位加
AAA;加法ASCII调整
XCHGAL,DL;AL与DL交换
SUBAL,[BP];和的低8位减减数的低8位
AAS;减法ASCII调整
XCHGAL,DL;AL与DL交换,存低8位结果
SBBAL,[BP+1];高8位带进位减
AAS;减法ASCII调整
MOVDH,AL;存高8位结果
RET
STARTENDP
CODEENDS
ENDSTART
——运行结果:
DX=0504H
3.乘法程序设计
要求:
试设计、编写程序,计算(A×(B。
A、B表示内存单元,分别存放着二个用非压缩BCD码表示的十进制数(如34、56。
内存单元(A=04H,(A+1=03H,内存单元(B=06H,(B+1=05H,计算结果应为非压缩的BCD码表示的十进制数,存放在以C为首地址的4个连续内存字节单元中。
设内存单元A=2200H、B=2220H、C=2240H;
源程序
DATASEGMENTPARAPUBLIC…DATA‟
DATAENDS
STACKSEGMENTPARASTACK…STACK‟
DB512DUP(?
STACKENDS
CODESEGMENTPARAPUBLIC…CODE‟
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,0
MOVBX,0
MOVDI,223AH
MOVSI,2230H
MOVAL,04H;被乘数低8位送AL
MOVBL,06H;乘数低8位送BL
MULBL;相乘,AL=18H,CF=0
AAM;调整,AH=02H,AL=04H
MOVWORDPTR[DI],AX;存结果,(DI,DI+1=04H,02H
MOVAL,03H;被乘数高8位送AL
MULBL;被乘数高8位乘以乘数低8位,AL=12H,CF=0AAM;调整,AH=01H,AL=08H
ADDAL,[DI+1];部分积相加,AL=0AH
AAA;调整,AH=02H,AL=00H,AF=1,CF=1MOVWORDPTR[DI+1],AX;存结果,(DI+1,DI+2=00H,02HMOVAL,04H;被乘数低8位送AL
MOVBL,05H;乘数高8位送BL
MULBL;相乘,AL=14H
AAM;调整,AH=02H,AL=00H
MOVWORDPTR[SI],AX;存结果,(SI,SI+1=00H,02H
MOVAL,03H;被乘数高8位送AL
MULBL;被乘数高8位乘以乘数高8位,AL=0FHAAM;调整,AH=01H,AL=05H
ADDAL,[SI+1];部分积相加,AL=07H
AAA;调整,AH=01H,AL=07H,AF=0,CF=0MOVWORDPTR[SI+1],AX;存结果,(SI+1,SI+2=07H,01H
MOVAL,[DI];AL=04H
MOVBP,2240H;乘积首址2240H
MOV[BP],AL;存积低位,(2240H=04H
MOVAL,[DI+1]
ADDAL.[SI+1]
AAA;调整,AH=01H,AL=00H,AF=0,CF=0MOV[BP+1],AL;存积低位加1,(2241H=00H
MOVAL,[DI+2];AL=02H
ADCAL,[SI+1];AL=09H,AF=0,CF=0
AAA;调整,AH=01H,AL=09H
MOV[BP+2],AL;存积低位加2,(2242H=09H
MOVAL,0
ADCAL,[SI+2];AL=01H,AF=0,CF=0
AAA;调整,AH=01H,AL=01H
MOV[BP+3],AL;存积高位,(2243H=01H
RET
STARTENDP
CODEENDS
ENDSTART
——运行结果:
(2243H=01H,(2242H=09H,(2241H=00H,(2240H=04H;积=1904H
4.除法程序设计(选做
⑴要求
试设计、编写程序,计算(A/(B,A、B表示内存单元,数据自定。
其中除数(B是16位十六进制数,存放在BX中;被除数(A是32位十六进制数,高16位存放在DX,低16位存放在AX中;结果为32位十六进制数的商存放在BX:
AX中;16位十六进制余数存放在DX中。
设置数据时如果除数等于零或者商大于16位,则应考虑溢出处理。
源程序(避免溢出的除法程序
STACKSEGMENTPARASTACK'STACK'
DW32DUP(0
STACKENDS
DATASEGMENTPARA'DATA'
DATAENDS
CODESEGMENTPARA'CODE'
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
DIVUOPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAX,1FCDH;被除数低16位
MOVDX,3B78H;被除数高16位
MOVBX,7C9AH;16位除数
CMPBX,0;除数=0?
JNZDVROK;不为零,转
DIVBX;为零,除
JMPSHORTGO_DOS
DVROK:
PUSHES
PUSHDI
PUSHCX
MOVDI,0;取出当前的INT0向量并保存之
MOVES,DI
PUSHES:
[DI]
PUSHES:
[DI+2]
LEACX,OVR_INT;获得INT0向量
MOVES:
[DI],CX
MOVCX,SEGOVR_INT
MOVES:
[DI+2],CX
DIVBX;做除法
SUBBX,BX
RESTORE:
POPES:
[DI+2];恢复INT0向量
POPES:
[DI]
POPCX
POPDI
POPES
GO_DOS:
RET
OVR_INT:
POPCX
LEACX,RESTORE
PUSHCX
PUSHAX
MOVAX,DX
SUBDX,DX
DIVBX
POPCX
PUSHAX
MOVAX,CX
DIVBX
POPBX
IRET
DIVUOENDP
CODEENDS
ENDDIVUO
——运行结果:
商BX:
AX=7A2EH,余数DX=5821H
程序流程框图
四.思考题
1.若对两个带符号的双精度数作加、减法运算,该怎样处理。
答:
如果对两个带符号的双精度数作加、减法运算,则运算应按照带符号的加、减法考虑。
2.在编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- pd32 微机 原理 接口 技术标准 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)