计算机组成原理与汇编吴致远.docx

上传人:b****3 文档编号:2956390 上传时间:2022-11-16 格式:DOCX 页数:20 大小:165.40KB
下载 相关 举报
计算机组成原理与汇编吴致远.docx_第1页
第1页 / 共20页
计算机组成原理与汇编吴致远.docx_第2页
第2页 / 共20页
计算机组成原理与汇编吴致远.docx_第3页
第3页 / 共20页
计算机组成原理与汇编吴致远.docx_第4页
第4页 / 共20页
计算机组成原理与汇编吴致远.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

计算机组成原理与汇编吴致远.docx

《计算机组成原理与汇编吴致远.docx》由会员分享,可在线阅读,更多相关《计算机组成原理与汇编吴致远.docx(20页珍藏版)》请在冰豆网上搜索。

计算机组成原理与汇编吴致远.docx

计算机组成原理与汇编吴致远

计算机组成原理与汇编

实验报告

学院:

 信息科学与工程学院

专业班级:

 物联网工程1402班 

学号:

  0919140208

姓名:

  吴致远

实验一

一、实验原理

通过基本的练习,熟悉汇编平台的使用。

以方便后期实验以及程序设计时,对基本操作的熟悉,以及一些基本的调试方法。

二、实验目的

1.8086基本指令及寄存器实验

2.熟悉包括数据和转移地址有关的寻址方式

3.了解程序占有的空间和执行时间

4.熟悉使用数据传输指令、算术指令、逻辑指令、串指令、控制转移指令、处理控制与杂项操作指令等等。

(数据传输指令

通用数据传输指令:

MOV、PUSH、POP、XCHG

累加器专用传输指令:

IN、OUT、XLAT

地址传输指令:

LEA、LDS、LES

标志寄存器传输指令:

LAHF、SAHF、PUSHF、POPF

类型转化:

CBW、CWD

算数指令

加法指令:

ADD、ADC、INC

减法指令:

SUB、SBB、DEC、NEG、CMP

乘法指令:

MUL、IMUL

除法指令:

DIV、IDIV

逻辑指令

逻辑运算指令:

AND、OR、NOT、XOR、TEST

移位指令:

SHL、SAL、SHR、SAR、ROL、ROR、RCL、RCR

串处理指令:

MOVS、CMPS、SCAS、LODS、STOS

5.熟悉汇编平台的使用和汇编程序的典型结构

6:

熟悉DEBUG的各种命令

7:

了解不同指令对各种条件标志的影响

三、实验内容

程序设计与调试

(1)x,y,z均为双精度数,分别存放于X,X+2,Y,Y+2,Z,Z+2的存储单元中,用指令序列实现w=x+y+24-z,并用W,W+2单元存放w

 

DATASSEGMENT

;此处输入数据段代码

Xdw0102H

dw0304H

Ydw0506H

dw0708H

Zdw090AH

dw0B0CH

Wdw4dup(?

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

;此处输入代码段代码

movax,X

movdx,X+2

addax,Y

adcdx,Y+2

addax,24

adcdx,0

subax,Z

sbbdx,Z+2

movW,ax

movW+2,dx

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

每执行一步,观看寄存器、内存、以及标志寄存器是否改变?

试着改变x,y,z的值,如x=33441122H,y=77885566H,z=0BBCC99AAH

观察每一步的变化,请问运行结果正确吗?

为啥?

若x=33441122H,y=77885566H,z=0BBCC99AAH

观察每一步的变化,运行结果不正确,因为x,y,z溢出了

(2)x,y,z,v均为16位带符号数,计算(v-(x*y+z-540))/x

编制程序,用不同的x,y,z,v带进去,看过程,与结果,并分析结果正确与否

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

实验二

一、实验原理

根据要求将BX内容从左到右每4位一组在屏幕上显示出来利用循环结构完成每次循环显示一个十六进制数位因而循环次数是已知的计数值为4.循环体中包括从二进制到所显示字符的ASCII之间的转换以及每个字符的显示后者可以使用DOS功能调用实现。

这里采用了循环移位的方法把所要显示的4为二进制数移到最右面以便做数字到字符的转换工作。

二、实验目的

1.掌握循环程序的设计方法。

2.掌握汇编语言源程序的编辑、汇编、连接及调试过程。

3.进一步熟悉利用DEBUG程序修改参数的方法并检查和验证结果的正确性。

4.学会针对不同的问题选用不同的组织循环的方法。

CODESSEGMENT

mainprocfar

ASSUMECS:

CODES

START:

movbx,6a4ch

pushds

subax,ax

pushax

movch,4

rotate:

movcl,4

rolbx,cl

moval,bl

andal,0fh

addal,30h

cmpal,3ah

jlprintit

addal,7h

printit:

movdl,al

movah,2

int21h

decch

jnzrotate

ret

mainendp

;此处输入代码段代码

CODESENDS

END

 

Bx中的数位6A4C

实验三

一、实验原理

冒泡排序算法需要从第一个数开始依次对相邻两个数进行比较。

如果是按次序排列则不做任何操作如不是按次序排列则使两个数交换位置。

一层一层往上冒泡。

二、实验目的

1.掌握循环程序的设计方法

2.掌握汇编语言源程序的编辑、汇编、连接及调试过程。

3.进一步熟悉利用DEBUG程序修改参数的方法并检查和验证结果的正确性。

4.学会针对不同的问题选用不同的组织循环的方法。

三、实验内容

冒泡排序算法的程序设计与实现(画出原理图,设计程序,调试程序。

记录调试关键过程和结果,可能遇到的问题以及解决的方法)

DATASSEGMENT

ADW12,17,9,3,28,97,54,20,20,67;此处进行数据的初始化

NEQU10

MDW10D

BUF1DB'SequenceBeforeSort:

','$'

BUF2DB0DH,0AH,'SequenceAfterSort:

','$'

DATASENDS

STACKSSEGMENT

DW100DUP(?

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS,ES:

DATAS

START:

MOVAX,DATAS

MOVDS,AX

MOVDX,OFFSETBUF1;显示未排序的提示符

MOVAH,09H

INT21H

MOVCX,N

LEASI,A

LOOP1:

CALLDISPLAY;进行未排序的数据显示

LOOPLOOP1

;开始排序

CLD

MOVCX,N-1

LOOP2:

PUSHCX

LEASI,A;取数据区的第一个数的偏移量

LODSW;取第1个数存入AX

LP1:

MOVBX,AX;开始内部排序第5-CX次

LODSW;取第6-CX个数

CMPBX,AX;比较两个数大小

JLL1;前面数小的话符合要求跳转,大的话换位

MOV[SI-2],BX;大的数到后面

MOV[SI-4],AX;小的数到前面

MOVAX,[SI-2];改变AX的值

L1:

LOOPLP1;小循环CX减1

POPCX;弹出外部循环计数

LOOPLOOP2

;输出排序后的结果

MOVDX,OFFSETBUF2

MOVAH,09H

INT21H

MOVCX,N;因为有十个数,所以计数寄存器CX置十

LEASI,A

LOOP3:

CALLDISPLAY;排序后结果显示

LOOPLOOP3

MOVAH,4CH

INT21H

DISPLAYPROC;转换子程序(SI指针由外部提供,方便选择要显示的东西)

LODSW

MOVBX,3;数据在十进制时的是三位数所以计数部分BX置三

Z1:

CWD

DIVM;采用除以10的方法不断得到每一位数

PUSHDX;将每一位压入栈

DECBX

JNZZ1

MOVBX,3

Z2:

POPDX;压完一个数后立即出栈进行显示

ADDDL,30H

DECBX

MOVAH,2

INT21H

JNZZ2

MOVDL,20H;每个数据间由空格隔开

MOVAH,2

INT21H

RET;子程序结束

DISPLAYENDP

CODESENDS

ENDSTART

 

实验四

一、实验原理

调用FIB函数求Fibonacci数,结果高位存在RESULT2H低位存在RESULT2L最后调用OUTPUT函数将结果以十进制的形式显示出来。

二、实验目的

1.掌握循环程序的设计方法

2.掌握汇编语言源程序的编辑、汇编、连接及调试过程。

3.进一步熟悉利用DEBUG程序修改参数的方法并检查和验证结果的正确性。

4.学会针对不同的问题选用不同的组织循环的方法。

三、实验内容

求Fibonacci递归数(画出原理图,设计程序,调试程序。

记录调试关键过程和结果,可能遇到的问题以及解决的方法)

DATASSEGMENT

M1DB13,10,'Pleaseinputn=$'

M2DB13,10,'FibonacciSequenceis:

$'

NDW?

F1DW0

F2DW1

DATASENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS

MOVDS,AX

LEADX,M1

MOVAH,9

CALLINPUT

CMPCX,1

JBEXIT

MOVN,CX

LEADX,M2

MOVAH,9

INT21H

MOVDL,'1'

MOVAH,2

INT21H

MOVDL,''

INT21H

DECN

JZEXIT

LP:

MOVAX,F1

ADDAX,F2

JCEXIT

MOVBX,F2

MOVF1,BX

MOVF2,AX

CALLOUTPUT

MOVDL,''

MOVAH,2

INT21H

DECN

JNZLP

EXIT:

MOVAH,4CH

INT21H;返回DOS

INPUT:

MOVBL,10

MOVCX,0

IN_X:

MOVAH,7

INT21H

CMPAL,13

JEIN_END

CMPAL,'0'

JBIN_X

CMPAL,'9'

JAIN_X

MOVDL,AL

INT21H

MOVAL,DL

SUBAL,30H

MOVAH,0

XCHGAX,CX

MULBL

ADDCX,AX

CMPCH,0

JNZIN_END

JMPIN_X

IN_END:

RET

OUTPUT:

MOVBX,10

MOVCX,0

OL1:

MOVDX,0

DIVBX

ADDDL,'0'

PUSHDX

INCCX

CMPAX,0

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

当前位置:首页 > 法律文书 > 调解书

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

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