微机原理与接口技术实验报告Word文档格式.docx

上传人:b****6 文档编号:18913548 上传时间:2023-01-02 格式:DOCX 页数:26 大小:48.64KB
下载 相关 举报
微机原理与接口技术实验报告Word文档格式.docx_第1页
第1页 / 共26页
微机原理与接口技术实验报告Word文档格式.docx_第2页
第2页 / 共26页
微机原理与接口技术实验报告Word文档格式.docx_第3页
第3页 / 共26页
微机原理与接口技术实验报告Word文档格式.docx_第4页
第4页 / 共26页
微机原理与接口技术实验报告Word文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术实验报告Word文档格式.docx

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

微机原理与接口技术实验报告Word文档格式.docx

?

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:

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文件

LINKM1.OBJ

Microsoft(R)OverlayLinkerVersion3.60

Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.

RunFile[M1.EXE]:

ListFile[NUL.MAP]:

Libraries[.LIB]:

LINK程序输出3个文件:

.EXE文件;

.LIB库文件;

.MAP列表文件。

连接过程全部完成,可以执行程序;

⑷在TD状态下用单步运行F8对M1.EXE文件进行调试,观察、记录结果。

TD

进入TD调试软件后用单步执行F8命令从首地址开始执行指令并观察相应变化。

运行结果如下:

―F8

AX=0000BX=0000CX=000DDX=0000SP=2000BP=0000SI=0000DI=0000

DS=17F7ES=17F7SS=17F7CS=17F7IP=0103NVUPDIPLNZNAPONC

17F7:

0103B80030MOVAX,3000

AX=3000BX=0000CX=000DDX=0000SP=2000BP=0000SI=0000DI=0000

DS=17F7ES=17F7SS=17F7CS=17F7IP=0106NVUPDIPLNZNAPONC

0106BB0050MOVBX,5000

AX=3000BX=5000CX=000DDX=0000SP=2000BP=0000SI=0000DI=0000

DS=17F7ES=17F7SS=17F7CS=17F7IP=0109NVUPDIPLNZNAPONC

010950PUSHAX

AX=3000BX=5000CX=000DDX=0000SP=1FFEBP=0000SI=0000DI=0000

DS=17F7ES=17F7SS=17F7CS=17F7IP=010ANVUPDIPLNZNAPONC

010A53PUSHBX

AX=3000BX=5000CX=000DDX=0000SP=1FFCBP=0000SI=0000DI=0000

DS=17F7ES=17F7SS=17F7CS=17F7IP=010BNVUPDIPLNZNAPONC

010B58POPAX

AX=5000BX=5000CX=000DDX=0000SP=1FFEBP=0000SI=0000DI=0000

DS=17F7ES=17F7SS=17F7CS=17F7IP=010CNVUPDIPLNZNAPONC

010C5BPOPBX

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,SS:

STARTPROCFAR

PUSHDS

MOVAX,0

MOVAX,DATA

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

PUSHF;

SP=50FDH(SP,SP+1)=3102H

POPF;

SP=50FDH

;

FLAG=NVUPDIPLNZNAPONC

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];

16+BX),ES=(DS×

4.标志寄存器传送指令

⑴标志传送指令

LAHF;

AH←PSW的低字节

SAHF;

PSW的低字节←AH

⑵标志进、出栈

PUSHF;

SP←SP-2,(SP+1,SP)←PSW

POPF;

PSW←(SP+1,SP),SP←SP+2

实验二:

算术运算

设计

1.验证算术运算基本指令;

2.正确使用加、减、乘、除程序,为设计综合算术运算程序打好基础;

3.学习独立编程;

4.深入学习、掌握TD调试软件的使用方法。

三.实验内容及步骤

1.加、减法运算

⑴要求

调试以下程序

DATASEGMENTPARAPUBLIC‘DATA’

DATAENDS

STACKSEGMENTPARASTACK‘STACK’

DB512DUP(?

CODESEGMENTPARAPUBLIC‘CODE’

STARTPROCFAR

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

各寄存器及内存数据如上。

2.加、减法程序设计

试设计、编写程序,计算(UP1)+(UP2)-(UP3),结果存放在DX中。

如25+48-19=?

其中UP1、UP2、UP3的内容均为二位十进制数,并以非压缩BCD码格式存入存储器:

(UP1)=0205H,(UP2)=0408H,(UP3)=0109H

UP1=2050H,UP2=2150H,UP3=2250H

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];

带进位加

XCHGAL,DL;

AL与DL交换

SUBAL,[BP];

和的低8位减减数的低8位

AAS;

减法ASCII调整

AL与DL交换,存低8位结果

SBBAL,[BP+1];

高8位带进位减

MOVDH,AL;

存高8位结果

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;

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

被乘数高8位乘以乘数低8位,AL=12H,CF=0

调整,AH=01H,AL=08H

ADDAL,[DI+1];

部分积相加,AL=0AH

调整,AH=02H,AL=00H,AF=1,CF=1

MOVWORDPTR[DI+1],AX;

存结果,(DI+1,DI+2)=00H,02H

MOVAL,04H;

MOVBL,05H;

乘数高8位送BL

相乘,AL=14H

调整,AH=02H,AL=00H

MOVWORDPTR[SI],AX;

存结果,(SI,SI+1)=00H,02H

MOVAL,03H;

被乘数高8位乘以乘数高8位,AL=0FH

调整,AH=01H,AL=05H

ADDAL,[SI+1];

部分积相加,AL=07H

调整,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

存积低位,(2240H)=04H

MOVAL,[DI+1]

ADDAL.[SI+1]

调整,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

调整,AH=01H,AL=09H

MOV[BP+2],AL;

存积低位加2,(2242H)=09H

MOVAL,0

ADCAL,[SI+2];

AL=01H,AF=0,CF=0

调整,AH=01H,AL=01H

MOV[BP+3],AL;

存积高位,(2243H)=01H

(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'

CODESEGMENTPARA'

CODE'

ASSUMECS:

DIVUOPROCFAR

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVAX,1FCDH;

被除数低16位

MOVDX,3B78H;

被除数高16位

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

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

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

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