汇编实验.docx

上传人:b****6 文档编号:6559461 上传时间:2023-01-07 格式:DOCX 页数:14 大小:60.52KB
下载 相关 举报
汇编实验.docx_第1页
第1页 / 共14页
汇编实验.docx_第2页
第2页 / 共14页
汇编实验.docx_第3页
第3页 / 共14页
汇编实验.docx_第4页
第4页 / 共14页
汇编实验.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

汇编实验.docx

《汇编实验.docx》由会员分享,可在线阅读,更多相关《汇编实验.docx(14页珍藏版)》请在冰豆网上搜索。

汇编实验.docx

汇编实验

 

中南民族大学

 

学生实验报告

 

院系:

计算机科学学院

专业:

软件工程

年级:

2016级

课程名称:

0x86汇编语言

学号:

201621092056

姓名:

刘岱俊

指导教师:

熊志勇

 

2018年12月15日

 

年级

2016级

班号

2班

组号

 学号

201621092056

专业

软件工程

 姓名

刘岱俊

实验名称

分支程序设计——3.3计算函数值

实验室

9#204

实验目的

掌握80X8632位汇编语言程序设计的基本步骤,分析问题,确立算法。

根据程序算法流程选择合适的指令编制汇编语言源程序。

本实验着重掌握顺序程序设计的基本方法和技巧,熟练使用基本的I/O宏。

实验要求

(1)程序要结构化:

简明、易读和易调试。

(2)执行速度较快且占用存储空间较少。

1.题目分析:

输入一个字符,找出它的前导字符和后续字符,并按顺序显示这三个字符。

2.所需要达到的实验要求:

程序从键盘接收用户输入的一个字符后,然后分别找出它的前导字符和后续字符,再按顺序显示这三个字符。

在用户输入和显示字符之前都要有相应的提示信息。

3.构思:

从AL寄存器得到它的ASCII码,它的前导字符和后续字符的ASCII码分别比它的ASCII码少1或多1。

然后分别显示这三个字符。

4.代码实现

.DATA;启动主程序代码

…………

_start:

outputprompt1

inputchar4,3;读ASCII字符

moval,char4

movchar1,al

incal

movchar2,al

decal

decal

movchar3,al

outputlabel1

INVOKEExitProcess,0;退出,返回代码0

PUBLIC_start

END

个人完成,无组内分工

实验截图:

心得体会

通过本次试验,我掌握的汇编语言的基本操作,及通过ASCII码对字符进行操作。

掌握顺序程序设计的基本方法和技巧,熟练使用基本的I/O宏。

 

教师签名:

年月日

年级

2016级

班号

2班

组号

 学号

201621092056

专业

软件工程

 姓名

刘岱俊

实验名称

分支程序设计——3.3计算函数值

实验室

9#204

实验目的

掌握分支程序设计的原理和方法,重点掌握各种分支程序中形成和判断条件而产生的程序段的设计方法和技巧。

实验要求

(3)如何产生条件

(4)如何对条件进行判断

(5)如何实现分支

1.题目:

计算给定函数值

2.实验要求:

编制程序,计算下面函数值

i.

ii.其中,从键盘输入x,y,输出数据为a。

iii.输入输出时候都要求有提示信息。

3.提示:

这个给出两种方法如下:

i.先输入x和y,然后用嵌套的IF结构来分别判断并给a赋值。

ii.分别为x和y设置一个标志变量,当值大于等于0时该变量等于1,当值小于0时该变量等于0。

然后用这两个变量进行异或操作,结果赋值给a。

(这个需要用到xor指令)。

4.代码实现

.DATA

.CODE

_start:

outputprompt1

inputstring,10

atoistring

movbx,ax

outputprompt2

inputstring,10

atoistring

movcx,0

cmpbx,0

jgeL1

cmpax,0

jlL2

L1:

cmpax,0

jgeL3

jmpL4

L2:

movcx,-1

jmpL4

L3:

movcx,1

L4:

itoaavalue,cx

outputoutstr1

INVOKEExitProcess,0;exitwithreturncode0

PUBLIC_start

END

个人完成,无组内分工

实验截图:

心得体会

本次试验我在试验中,根据提示输入两个整数,通过与0比较进行跳转,最后赋值输出,掌握分支程序设计的原理和方法,重点掌握各种分支程序中形成和判断条件而产生的程序段的设计方法和技巧。

 

教师签名:

年月日

年级

2016级

班号

2班

组号

 学号

201621092056

专业

软件工程

 姓名

刘岱俊

实验名称

子程序设计—5.3求X的阶乘

实验室

9#204

实验目的

掌握子程序设计的原理和方法,重点掌握子程序编写和调用的过程以及堆栈操作和参数以及局部变量的概念。

实验要求

(1)编写子程序

(2)在主程序中调用子程序

(3)实现主程序与子程序的参数传递

1.1.题目:

求X的阶乘值

2.2.实验要求:

输入一个整型数(不超过10),求出其阶乘值后输出,求阶乘的算法用子程序来实现。

3.3.提示:

可以用递归来实现,也可以用简单的循环来实现。

4.代码实现:

.DATA

………..

.CODE

_start:

L1:

outputprompt1

inputstring,11

atodstring

cmpeax,0

jlL1

cmpeax,10

jgL1

pusheax

callFACT

INVOKEExitProcess,0

FACTPROCNEAR32

pushebp

movebp,esp

moveax,[ebp+8]

movecx,eax

cmpeax,0

jeL2

cmpeax,1

jeL2

dececx

forcount:

mulecx

loopforcount

jmpL3

L2:

moveax,1

L3:

dtoavalue,eax

outputresult

popebp

ret4

FACTENDP

PUBLIC_start

END

个人完成,无组内分工

实验截图:

心得体会

通过本次试验,我掌握子程序设计的原理和方法,重点掌握子程序编写和调用的过程以及堆栈操作和参数以及局部变量的概念

 

教师签名:

年月日

源代码如下:

实验2.3代码:

;*********************************************************************

;Exampleassemblylanguageprogram--输入一个字符,找出它的前导字符和后续字符,并按顺序显示这三个字符

;Author:

刘岱俊

;studentnumber:

201621092056

;Date:

2018年12月1日。

;---------------------------------------------------------------------

.386

.MODELFLAT

;---------------------------------------------------------------------

ExitProcessPROTONEAR32stdcall,dwExitCode:

DWORD

;---------------------------------------------------------------------

INCLUDEio.h;输入/输出头文件

;---------------------------------------------------------------------

crEQU0dh;回车字符

LfEQU0ah;换行

;---------------------------------------------------------------------

.STACK4096;储备4096字节的堆栈

;---------------------------------------------------------------------

.DATA;启动主程序代码

prompt1BYTE"Thisprogramwilloutputthreecharacter",cr,lf

BYTE"Enteracharacter:

",0

label1BYTEcr,Lf,"Thethreecharacteris",cr,lf

char3BYTE?

BYTEcr,Lf

char1BYTE?

BYTEcr,lf

char2BYTE?

BYTEcr,lf,0

char4byte5dup(?

.CODE

_start:

outputprompt1

inputchar4,3;读ASCII字符

moval,char4

movchar1,al

incal

movchar2,al

decal

decal

movchar3,al

outputlabel1

INVOKEExitProcess,0;退出,返回代码0

PUBLIC_start

END

实验3.3代码:

;*********************************************************************

;Exampleassemblylanguageprogram--计算给定函数值

;Author:

刘岱俊

;studentnumber:

201621092056

;Date:

2018年12月1日。

;---------------------------------------------------------------------

.386

.MODELFLAT

;---------------------------------------------------------------------

ExitProcessPROTONEAR32stdcall,dwExitCode:

DWORD

;---------------------------------------------------------------------

INCLUDEio.h;输入/输出头文件

;---------------------------------------------------------------------

crEQU0dh;回车字符

LfEQU0ah;换行

;---------------------------------------------------------------------

.STACK4096;储备4096字节的堆栈

;---------------------------------------------------------------------

.DATA

prompt1byte"pleaseinputx:

",0

prompt2byte"pleaseinputy:

",0

stringbyte10dup(?

outstr1bytecr,lf,"a="

avaluebyte6dup(?

),cr,lf,0

.CODE

_start:

outputprompt1

inputstring,10

atoistring

movbx,ax

outputprompt2

inputstring,10

atoistring

movcx,0

cmpbx,0

jgeL1

cmpax,0

jlL2

L1:

cmpax,0

jgeL3

jmpL4

L2:

movcx,-1

jmpL4

L3:

movcx,1

L4:

itoaavalue,cx

outputoutstr1

INVOKEExitProcess,0;exitwithreturncode0

PUBLIC_start

END

实验5.3代码:

;*********************************************************************

;Exampleassemblylanguageprogram--5.3求X的阶乘

;Author:

刘岱俊

;studentnumber:

201621092056

;Date:

2018年12月1日。

;---------------------------------------------------------------------

.386

.MODELFLAT

;---------------------------------------------------------------------

ExitProcessPROTONEAR32stdcall,dwExitCode:

DWORD

;---------------------------------------------------------------------

INCLUDEio.h;输入/输出头文件

;---------------------------------------------------------------------

crEQU0dh;回车字符

LfEQU0ah;换行

;---------------------------------------------------------------------

.STACK4096;储备4096字节的堆栈

;---------------------------------------------------------------------

.DATA

prompt1BYTE'Calculatethefactorialofanumber:

',cr,lf

BYTE'Pleaseinputanumberthatisfrom0to10',cr,lf,0

stringBYTE20DUP(?

resultBYTE'Theresultis'

valueBYTE11DUP(?

BYTEcr,lf,0

.CODE

_start:

L1:

outputprompt1

inputstring,11

atodstring

cmpeax,0

jlL1

cmpeax,10

jgL1

pusheax

callFACT

INVOKEExitProcess,0;exitwithreturncode0

FACTPROCNEAR32

pushebp

movebp,esp

moveax,[ebp+8]

movecx,eax

cmpeax,0

jeL2

cmpeax,1

jeL2

dececx

forcount:

mulecx

loopforcount

jmpL3

L2:

moveax,1

L3:

dtoavalue,eax

outputresult

popebp

ret4

FACTENDP

PUBLIC_start;makeentrypointpublic

END;endofsourcecode

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

当前位置:首页 > 经管营销 > 财务管理

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

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