微机原理与接口技术实验报告.docx
- 文档编号:29138339
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:32
- 大小:85.38KB
微机原理与接口技术实验报告.docx
《微机原理与接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验报告.docx(32页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术实验报告
实验一:
数据传送
实验学时:
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 :
STACK
MAIN
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(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.
ObjectFilename[HEXASC.OBJ]:
Sourcelisting[NUL.LST]:
Cross-reference[NUL.CRF]:
51576+385928Bytessymbolspacefree
0WarningErrors
0SevereErrors
以上说明汇编过程已经完成。
⑶用LINK程序产生EXE文件
操作如下:
E:
\SY86>LINKM1.OBJ
Microsoft(R)OverlayLinkerVersion3.60
Copyright(C)MicrosoftCorp1983-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=0000
DS=17F7ES=17F7SS=17F7CS=17F7IP=0103NVUPDIPLNZNAPONC
17F7:
0103B80030MOVAX,3000
―F8
AX=3000BX=0000CX=000DDX=0000SP=2000BP=0000SI=0000DI=0000
DS=17F7ES=17F7SS=17F7CS=17F7IP=0106NVUPDIPLNZNAPONC
17F7:
0106BB0050MOVBX,5000
―F8
AX=3000BX=5000CX=000DDX=0000SP=2000BP=0000SI=0000DI=0000
DS=17F7ES=17F7SS=17F7CS=17F7IP=0109NVUPDIPLNZNAPONC
17F7:
010950PUSHAX
―F8
AX=3000BX=5000CX=000DDX=0000SP=1FFEBP=0000SI=0000DI=0000
DS=17F7ES=17F7SS=17F7CS=17F7IP=010ANVUPDIPLNZNAPONC
17F7:
010A53PUSHBX
―F8
AX=3000BX=5000CX=000DDX=0000SP=1FFCBP=0000SI=0000DI=0000
DS=17F7ES=17F7SS=17F7CS=17F7IP=010BNVUPDIPLNZNAPONC
17F7:
010B58POPAX
―F8
AX=5000BX=5000CX=000DDX=0000SP=1FFEBP=0000SI=0000DI=0000
DS=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)←PSW
POPF;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=0
AAM;调整,AH=01H,AL=08H
ADDAL,[DI+1];部分积相加,AL=0AH
AAA;调整,AH=02H,AL=00H,AF=1,CF=1
MOVWORDPTR[DI+1],AX;存结果,(DI+1,DI+2)=00H,02H
MOVAL,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=0FH
AAM;调整,AH=01H,AL=05H
ADDAL,[SI+1];部分积相加,AL=07H
AAA;调整,AH=01H,AL=07H,AF=0,CF=0
MOVWORDPTR[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=0
MOV[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,7C9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 实验 报告