微机实验一到八答案.docx

上传人:b****6 文档编号:15810844 上传时间:2023-07-08 格式:DOCX 页数:53 大小:543.52KB
下载 相关 举报
微机实验一到八答案.docx_第1页
第1页 / 共53页
微机实验一到八答案.docx_第2页
第2页 / 共53页
微机实验一到八答案.docx_第3页
第3页 / 共53页
微机实验一到八答案.docx_第4页
第4页 / 共53页
微机实验一到八答案.docx_第5页
第5页 / 共53页
微机实验一到八答案.docx_第6页
第6页 / 共53页
微机实验一到八答案.docx_第7页
第7页 / 共53页
微机实验一到八答案.docx_第8页
第8页 / 共53页
微机实验一到八答案.docx_第9页
第9页 / 共53页
微机实验一到八答案.docx_第10页
第10页 / 共53页
微机实验一到八答案.docx_第11页
第11页 / 共53页
微机实验一到八答案.docx_第12页
第12页 / 共53页
微机实验一到八答案.docx_第13页
第13页 / 共53页
微机实验一到八答案.docx_第14页
第14页 / 共53页
微机实验一到八答案.docx_第15页
第15页 / 共53页
微机实验一到八答案.docx_第16页
第16页 / 共53页
微机实验一到八答案.docx_第17页
第17页 / 共53页
微机实验一到八答案.docx_第18页
第18页 / 共53页
微机实验一到八答案.docx_第19页
第19页 / 共53页
微机实验一到八答案.docx_第20页
第20页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机实验一到八答案.docx

《微机实验一到八答案.docx》由会员分享,可在线阅读,更多相关《微机实验一到八答案.docx(53页珍藏版)》请在冰点文库上搜索。

微机实验一到八答案.docx

微机实验一到八答案

2013——2014学年第二学期

广东药学院

实验报告

 

实验课程名称:

微型电脑技术及应用

专业班级:

电子信息工程12

组号:

第一组

小组成员:

谭浩敏〔1205520131〕

陈润强〔1205520106〕

刘赏源〔1205520107〕

实验指导老师:

何永玲

〔第一组〕实验二汇编语言指令仿真

组长:

谭浩敏组员:

刘赏源、陈润强

实验目的

1.学会用实验的方法验证理论,用理论来指导实验,进一步熟悉汇编语言开发环境。

2.深刻理解寻址方式的意义以及80X86指令的各种寻址方式。

3.深刻理解80X86各种指令的真正含义及功能。

4.掌握与数据有关的不同寻址方式。

5.继续熟悉实验操作软件的环境及使用方法。

实验内容及要求

一、在emu8086中仿真简单指令

1.仿真简单指令,请按要求写出程序代码及实验步骤。

2.将实验结果与理论结果进行比较,以便深入理解80X86指令的各种寻址方式。

3.实验过程中遇到的问题及解决方法。

4.写出心得体会及还未理解的知识点。

DS=1000H,SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1350H,

SI=1354H,(11350H)=0A5H,(11351H)=3CH,(11352H)=0FFH,(11353H)=26H,

(11354H)=52H,(11355H)=0E7H,(126ª4H)=9DH,(126ª5H)=16H,

(21350H)=88H,(21351H)=51H.

以下各指令都在此环境下执行,在以下各小题的空格中填入相应个指令的执行结果。

实验代码:

MOVAX,1000H

MOVDS,AX;不能直接给DS,SS赋值,只能通过通用寄存器

MOVAX,2000H

MOVSS,AX

MOVAX,1A2BH

MOVBX,1200H

MOVCX,339AH

MOVBP,1200H

MOVSP,1350H

MOVSI,1354H

MOV0150H[BX],0A5H

MOV0151H[BX],3CH

MOV0152H[BX],0FFH

MOV0153H[BX],26H

MOV[SI],52H

MOV1H[SI],0E7H

MOV[26A4H],9DH

MOV[26A5H],16H

MOVSS:

[1350H],88H

MOVSS:

[1351H],51H

;在上面的环境下,以下一行行的运行

MOVAX,1352H

MOVAX,[1352H]

MOV0150H[BX],CH

MOVAX,0150H[BP]

POPAX

ADD[SI],CX

SUBBH,0150H[BX][SI]

INCBYTEPTR0152H[BX]

INCWORDPTR0150H[BX]

SARBYTEPTR0150H[BX],1

SALBYTEPTR0150H[BX],1

实验结果:

(1)MOVAX,1352H

AX=1352H

(2)MOVAX,[1352H]

AX=26FFH

(3)MOV0150H[BX],CH

(11350H)=33H,(11351H)=3CH

(4)MOVAX,0150H[BP]

AX=5188H

(5)POPAX

AX=5188H,SP=1352H

〔6〕ADD[SI],CX

(11354H)=ECH,(11355H)=1AH

SF=0,ZF=0,PF=0,CF=1,OF=0

(7)SUBBH,0150H[BX][SI]

BH=75H,SF=0,ZF=0,PF=0,CF=1,OF=0

(8)INCBYTEPTR0152H[BX]

(11352H)=00H,(11353H)=26H,CF=0,

(9)INCWORDPTR0150H[BX]

(11352H)=FFH,11353H=26H,CF=0

(10)SARBYTEPTR0150H[BX],1

(11350H)=D2H,CF=1,OF=0

(11)SALBYTEPTRO150H[BX],1

(11350H)=4AH,CF=1,OF=1

【思考题】指出以下指令中源操作数和目的操作数的寻址方式:

(一定要注意分开写寻址方式)

〔1〕MOVAX,0AH〔2〕ADD[BX],DX

〔3〕PUSHCS〔4〕POPDS

〔5〕MULBL〔6〕MOVDX,[1200H]

〔7〕MOVSB〔8〕SUBAX,5[BP+DI]

解:

〔1〕SRC为立即数寻址,DEST为寄存器寻址;

〔2〕SRC为寄存器寻址,DEST为寄存器间接寻址;

〔3〕SRC为寄存器寻址,DEST为隐含堆栈指针寄存器间接寻址;

〔4〕SRC为隐含堆栈指针寄存器间接寻址,DEST为寄存器寻址;

〔5〕SRC为寄存器寻址,DEST为寄存器寻址;

〔6〕SRC为直接寻址,DEST为寄存器寻址;

〔7〕SRC为寄存器间接寻址,DEST为寄存器间接寻址;

〔8〕SRC为基址变址相对寻址,DEST为寄存器寻址;

实验心得与体会:

本次实验考察的是8086指令的寻址方式,我们组在实验课的时候准备不够充分,导致当堂实验效果不明显,不过我们在课后有一起讨论每条语句的意思,并且在听过老师课堂上的讲解后,逐步地理解了这个实验,希望在下次实验过程中做好更充分的准备,以便在实验的过程中到达好的效果。

 

实验三综合程序设计

第一组:

谭浩敏、刘赏源、陈润强

【实验目的】

1.通过简单编程来理解80X86指令系统

2.掌握汇编语言程序的特点及格式

3.掌握定义和使用汇编语言的常量、标示符和表达式

4.掌握汇编语言编程技巧和编程方法。

【实验内容一】

实验内容1:

用MOV指令实现两内存字节单元内容的交换

代码:

 MOV[2035H],01H

  MOV[2045H],02H

  MOVAX,[2035H]

  MOVBX,[2045H]

  MOV[2035H],BX

  MOV[2045H],AX

实验内容2:

把2060H地址开始的40个字节单元的内容与2080H地址开始的40个字节单元内容互换。

代码:

 

DATASEGMENT

  DATAENDS

  STACKSEGMENT

  ME1DW80HDUP(?

  STACKENDS

  CODESEGMENT

  ASSUMECS:

CODE,DSDATA,SS:

STACK,ES:

DATA

  

  START:

MOVAX,1000H

  MOVDS,AX

  MOVAX,2000H

  MOVES,AX

  

  MOVDI,2060H;循环赋值,从偏移量2060H开始

  MOVBX,1H

  MOVCX,28H;循环次数40次,28H是16进制

  LOOP1:

MOV[DI],BX

  INCBX

  INCDI

DECCX

  JNZLOOP1

  

  MOVDI,2080H

  MOVBX,2080H

  MOVCX,8

  TEMP:

MOVDX,[BX];此循环用来保存被覆盖的8个内存单元

  MOVES:

[DI],DX;的数据,放在ES段中

  INCDI

  INCBX

DECCX

  JNZTEMP

  

  MOVDI,2080H;给后40个内存单元循环赋值,

  MOVBX,50H;从偏移量2080H开始。

  MOVCX,28H

  LOOP2:

MOV[DI],BX

  INCBX

  INCDI

DECCX

  JNZLOOP2

  

  MOVSI,00H;交换40个字节内容

  MOVDI,00H

  MOVCX,28H

  R:

MOVBL,[SI+2060H]

  MOVBH,[DI+2080H]

  MOV[DI+2080H],BL

  MOV[SI+2060H],BH

  INCSI

  INCDI

DECCX

  JNZR

  CODEENDS

  END

实验内容3:

如果X>50,转移到TOO-HIGH,在TOO-HIGH中将X显示出来;如果带符号减法X-Y引起溢出,则转移到OVERFLOW,在OVERFLOW中将X、Y和X-Y的结果显示出来;否则,计算|X-Y|,并将结果存放在RESULT中。

(其中,X,Y,RESULT均为字变量〕

代码:

DATASEGMENT

DAIDB'X=:

$'

DAI2DB'Y=:

$'

DAI3DB'|X-Y|=:

$'

XDW-32768

YDW32

RESULTDW0

DATAENDS

STACKSSEGMENT

DW128DUP(?

STACKSENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVAX,X

CMPAX,50;比较

JGTOO-HIGH;如果(X)大于50,则转向TOO-HIGH

SUBAX,Y

JOOVERFLOW;溢出则转移

JNSNONNEG;无符号,则转

NEGAX;X—Y为正时,补码为其本身,为负时取补码刚好是它的相反数。

NONNEG:

MOVRESULT,AX;无溢出,取绝对值,并将结果存入RESULT

HLT;暂停

TOO-HIGH:

MOVDX,OFFSETDAI

MOVAH,09H

INT21H

MOVAX,X;取内存数到AX

CALLSHOW1;显示十进制形式

MOVAH,7;暂停

INT21H

MOVAX,4C00H;退出程序

INT21H

SHOW1:

XORCX,CX

MOVBX,10

NX1:

XORDX,DX

DIVBX

ORDX,0e30H

INCCX

PUSHDX

CMPAX,0

JNZNX1

NX2:

POPAX

INT10H

LOOPNX2

RET

 

OVERFLOW:

MOVDX,OFFSETDAI;显示X

MOVAH,09H

INT21H

MOVAX,X;取内存数到AX

CALLSHOW2;显示十进制形式

MOVAH,7;暂停

INT21H

MOVAX,4C00H;退出程序

INT21H

SHOW2:

XORCX,CX

MOVBX,10

NX3:

XORDX,DX

DIVBX

ORDX,0e30H

INCCX

PUSHDX

CMPAX,0

JNZNX3

NX4:

POPAX

INT10H

LOOPNX4

MOVDL,0AH

MOVAH,02H

INT21H

MOVDX,OFFSETDAI2;显示Y

MOVAH,09H

INT21H

MOVAX,Y;取内存数到AX

CALLSHOW3;显示十进制形式

MOVAH,7;暂停

INT21H

MOVAX,4C00H;退出程序

INT21H

SHOW3:

XORCX,CX

MOVBX,10

NX5:

XORDX,DX

DIVBX

ORDX,0e30H

INCCX

PUSHDX

CMPAX,0

JNZNX5

NX6:

POPAX

INT10H

LOOPNX6

MOVDL,0AH

MOVAH,02H

INT21H

MOVDX,OFFSETDAI3;显示|X-Y|

MOVAH,09H

INT21H

MOVBX,X

SUBBX,Y

MOVX,BX

MOVAX,X;取内存数到AX

CALLSHOW4;显示十进制形式

MOVAH,7;暂停

INT21H

MOVAX,4C00H;退出程序

INT21H

SHOW4:

XORCX,CX

MOVBX,10

NX7:

XORDX,DX

DIVBX

ORDX,0e30H

INCCX

PUSHDX

CMPAX,0

JNZNX7

NX8:

POPAX

INT10H

LOOPNX8

HLT

CODEENDS

ENDSTART

【实验总结】

内容一和内容二相对来说比较好理解,通过看一些实例,我们最终知道了应该怎么做,而内容三比较复杂,我们用了许多时间,不过最后经过组内的学习和讨论,终于做出来了。

我们都从中收获到了许多新知识。

 

实验四内存块移动实验

组长:

谭浩敏组员:

刘赏源,陈润强

一、实验目的

1、熟悉实验系统的编程和使用。

2、了解内存的移动方法。

3、加深对存储器读写的认识。

二、实验内容

实验内容1:

用汇编语言编写程序实现以下运算,并将最终结果显示在屏幕上。

假设变量X、Y、Z、V均为有符号的16位二进制。

(V-(X*Y+Z-540))/X

代码:

DATASEGMENT

DAI1DB0AH,0DH,'INPUTX,Y,Z,VORDERLY,EG:

+XXXX:

$'

DAI2DB0AH,0DH,'TYPEINTHENUMBER:

$'

DAI3DB0AH,0DH,'NUMBERX,Y,Z,VARE:

$'

DAI4DB0AH,0DH,'RESULTWIS:

$'

DAI5DB0AH,0DH,'EXTRAIS:

$'

BUFDB10

DB0

NUMDB200DUP(0)

XDW0

YDW0

ZDW0

VDW0

WDW2DUP(0)

DATAENDS

STACKSEGMENT

DB200DUP(0)

STACKENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE,SS:

STACK

Start:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETDAI1

MOVAH,09H

INT21H

INPUT:

MOVCH,04H

MOVDI,OFFSETX

DU04:

MOVDX,OFFSETDAI2

MOVAH,09H

INT21H

MOVDX,OFFSETBUF

MOVAH,0AH

INT21H

MOVCL,BUF[1]

DECCL

MOVAX,0

MOVSI,3

 

H1:

MOVBX,10

MULBX

MOVBL,BUF[SI]

SUBBL,30H

ADDAX,BX

INCSI

DECCL

JNZH1

 

CMPBUF[2],'-'

JNENONEGX

NEGAX

NONEGX:

MOV[DI],AX

INCDI

INCDI

DECCH

JNZDU04

MOVDX,OFFSETDAI3

MOVAH,09H

INT21H

MOVAX,X

CALLSHOW

MOVDL,','

MOVAH,02H

INT21H

MOVAX,Y

CALLSHOW

MOVDL,','

MOVAH,02H

INT21H

MOVAX,Z

CALLSHOW

MOVDL,','

MOVAH,02H

INT21H

MOVAX,V

CALLSHOW

 

MOVAX,X

IMULY

MOVCX,AX

MOVBX,DX

MOVAX,Z

CWD

ADDCX,AX

ADCBX,DX

SUBCX,540

SBBBX,0

MOVAX,V

CWD

SUBAX,CX

SBBDX,BX

IDIVX

MOVW,AX

MOVW+2,DX

MOVDX,OFFSETDAI4

MOVAH,09H

INT21H

MOVAX,W

CALLSHOW

MOVDX,OFFSETDAI5

MOVAH,09H

INT21H

MOVAX,W+2

CALLSHOW

MOVAH,4CH

INT21H

SHOW:

CMPAX,0

JGLOOP1

PUSHAX

MOVDL,'-'

MOVAH,02H

INT21H

POPAX

NEGAX

LOOP1:

XORCX,CX

MOVBX,10

Q0:

XORDX,DX

DIVBX

ORDX,0E30H

PUSHDX

INCCX

CMPAX,0

JNEQ0

Q1:

POPAX

INT10H

LOOPQ1

RET

CODEENDS

ENDSTART

 

三、实验体会

这次实验的难点主要在于各个数的输入与输出,汇编的数字输入要考虑很多问题,比方有符号数与无符号数,这对于不熟悉汇编的我们相对较难。

 

实验五循环程序设计

组长:

谭浩敏组员:

刘赏源、陈润强

【实验目的】:

1.学会思考程序的不足,并找出改良方法。

2.熟悉使用DOS和BIOS功能调用。

3.掌握汇编语言循环程序的编写。

【实验内容】:

 

1.“第3章〔3〕汇编程序设计.ppt”中的作业。

2.参考“第3章〔3〕汇编程序设计.ppt”关于排序的程序并完善和修改完成如下功能程序:

能通过键盘随机地输入几个数据(16位有符号数),然后进行从小到大进行排序,最后结果显示在屏幕上。

DATASEGMENT   

   DAI1DB0AH,0DH,'Pleasetypeinthenumber:

$'

   DAI2DB0AH,0DH,'Thesortis:

',0AH,0DH,'$'

   

   BUFDB10

   DB0

   NUMDB200DUP(0)

   buf1DW10dup(0)

   NEQU4

   

   DATAENDS

   

   STACKSEGMENT

   DB200DUP(0)

   STACKENDS

   

   CODESEGMENT

   ASSUMEDS:

DATA,CS:

CODE,SS:

STACK

   

   Start:

   MOVAX,DATA

   MOVDS,AX

   

   INPUT:

MOVCH,N

   MOVDI,OFFSETbuf1

   

   

   

   DU04:

MOVDX,OFFSETDAI1

   MOVAH,09H

   INT21H

   

   MOVDX,OFFSETBUF;键盘输入四个数

   MOVAH,0AH

   INT21H

   

   MOVCL,BUF[1]

   DECCL

   MOVAX,0

   MOVSI,3

   

   H1:

MOVBX,10

   MULBX

   MOVBL,BUF[SI]

   SUBBL,30H

   ADDAX,BX

   INCSI

   DECCL

   JNZH1

   

   CMPBUF[2],'+'

   JZNONEGX

   NEGAX

   

   NONEGX:

MOV[DI],AX

   INCDI

   INCDI

   DECCH

   JNZDU04

   ;开始从小到大排序--------------------------------------------------------------------------

   MOVCX,N

   DECCX

   LOOP1:

MOVDX,CX

   MOVBX,0

   LOOP2:

MOVAX,BUF1[BX]

   CMPAX,BUF1[BX+2]

   JLEL

   XCHGAX,BUF1[BX+2]

   MOVBUF1[BX],AX

   L:

ADDBX,2

   DECCX

   JNELOOP2

   MOVCX,DX

   LOOPLOOP1

   

   ;---------------------完成排序--------------------

   MOVDX,OFFSETDAI2

   MOVAH,09H

   INT21H

   MOVDI,0

   MOVCX,N

   A:

   pushax

   pushdx

   pushbx

   pushcx

   MOVAX,BUF1[DI]

   

   CALLSHOW

   popcx

  

   c:

MOVDL,''

   MOVAH,2

   INT21H

   

   popbx

   popdx

   popbx

   INCDI

   INCDI

   LOOPA

   

   exit:

MOVAH,4CH

   INT21H

 

   SHOW:

   CMPAX,0

   JGL1

   

   PUSHAX

   MOVDL,'-'

   MOV

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

当前位置:首页 > 工程科技 > 纺织轻工业

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

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