中南民族大学汇编实验报告.docx

上传人:b****7 文档编号:9208349 上传时间:2023-02-03 格式:DOCX 页数:15 大小:37.72KB
下载 相关 举报
中南民族大学汇编实验报告.docx_第1页
第1页 / 共15页
中南民族大学汇编实验报告.docx_第2页
第2页 / 共15页
中南民族大学汇编实验报告.docx_第3页
第3页 / 共15页
中南民族大学汇编实验报告.docx_第4页
第4页 / 共15页
中南民族大学汇编实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

中南民族大学汇编实验报告.docx

《中南民族大学汇编实验报告.docx》由会员分享,可在线阅读,更多相关《中南民族大学汇编实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

中南民族大学汇编实验报告.docx

中南民族大学汇编实验报告

 

中南民族大学

 

学生实验报告

 

院系:

计算机科学学院

专业:

计算机科学与技术

年级:

2012

课程名称:

80x86汇编语言

学号:

*****

姓名:

**********

 

2013年12月16日

 

年级

 2012

班号

 

 学号

 

专业

计算机科学与技术

 姓名

 

实验名称

 顺序程序设计

实验

类型

设计型

综合型

创新型

 实验目的

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

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

要求

(1)程序要结构化:

简明、易读和易调试。

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

题目:

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

 

.386

.MODELFLAT

ExitProcessPROTONEAR32stdcall,dwExitCode:

DWORD

INCLUDEio.h;headerfileforinput/output

crEQU0dh;carriagereturncharacter

LfEQU0ah;linefeed

.STACK4096;reserve4096-bytestack

.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;readASCIIcharacters

moval,char4

movchar1,al

incal

movchar2,al

decal

decal

movchar3,al

outputlabel1

INVOKEExitProcess,0;exitwithreturncode0

PUBLIC_start

END

要掌握将字符转换成ASCII码,然后根据ASCII码的加减得到输入字符的前一个和后一个字符

 

教师签名:

年月日

备注:

源代码附后,源代码要求有注释说明

年级

 2012

班号

 

 学号

 

专业

计算机科学与技术

 姓名

实验名称

 分支程序设计

实验

类型

设计型

综合型

创新型

 目的

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

要求

(1)如何产生条件

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

(3)如何实现分支

题目:

计算给定函数值

.386

.MODELFLAT

ExitProcessPROTONEAR32stdcall,dwExitCode:

DWORD

INCLUDEio.h;headerfileforinput/output

crEQU0dh;carriagereturncharacter

LfEQU0ah;linefeed

.STACK4096;reserve4096-bytestack

.DATA;reservestoragefordata

stringBYTE20DUP(?

promptBYTE"Thisprogramistojudgethesignoftwonumber",cr,lf

BYTE"EntertheValuefornumber:

",0

resultBYTEcr,Lf,"Theresultis"

valueBYTE6DUP(?

BYTEcr,Lf,0

.CODE;startofmainprogramcode

_start:

movecx,2

movebx,0

Done:

outputprompt;promptforfirstnumber

inputstring,20;readASCIIcharacters

atodstring;converttointeger

cmpeax,0;storeinmemory

jnlL1

jmpL2

(写不完时,可另加附页。

L1:

incebx

L2:

dececx

cmpecx,0

jeendFor

jmpDone

endFor:

decebx

dtoavalue,ebx

outputresult

INVOKEExitProcess,0;exitwithreturncode0

PUBLIC_start;makeentrypointpublic

END;endofsourcecode

要掌握分支程序的实现,考虑到等于0的时候分支的划分,输出正确的函数值

 

教师签名:

年月日

备注:

源代码附后,源代码要求有注释说明

年级

 2012

班号

 

 学号

专业

计算机科学与技术

 姓名

实验名称

 循环程序设计

实验

类型

设计型

综合型

创新型

 目的

掌握循环程序设计的原理和方法,重点掌握循环程序结构的形式和常用循环程序的控制方法和技巧。

要求

(1)置循环参数的初值

(2)循环体构成

(3)如何实现循环控制

题目:

用表格形式显示ASCII字符

 .386

.MODELFLAT

ExitProcessPROTONEAR32stdcall,dwExitCode:

DWORD

INCLUDEio.h;

crEQU0dh;

LfEQU0ah;

.STACK4096;

.DATA;reservestoragefor

prompt1BYTE"ThisprogramistodisplaythecharacterofASCIIfrom10hto100h",cr,lf,0

prompt2BYTElf,0

valueBYTE?

BYTE'',0

.CODE;startofmainprogramcode

_start:

outputprompt1

movvalue,10h

moveax,10h

movecx,16;promptforfirstnumber

whilepos:

cmpeax,100h

jgendwhile

outputvalue

incvalue

inceax

Loopwhilepos

(写不完时,可另加附页。

forcount:

outputprompt2

movecx,16

cmpeax,100h

jngwhilepos

endwhile:

INVOKEExitProcess,0;exitwithreturncode0

PUBLIC_start;makeentrypointpublic

END;endofsourcecode

显示ASCII码的所有字符时应是100h,而不是10h,否则会导致输出字符少

 

教师签名:

年月日

备注:

源代码附后,源代码要求有注释说明

年级

 2012

班号

 

 学号

专业

计算机科学与技术

 姓名

实验名称

 子程序设计

实验

类型

设计型

综合型

创新型

 目的

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

要求

(1)编写子程序

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

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

题目:

求X的阶乘值

.386

.MODELFLAT

ExitProcessPROTONEAR32stdcall,dwExitCode:

DWORD

INCLUDEio.h;headerfileforinput/output

crEQU0dh;carriagereturncharacter

LfEQU0ah;linefeed

.STACK40960;reserve4096-bytestack

.DATA;reservestoragefordata

prompt1BYTE'Thisprogramistocalculateanumbersfactorial',cr,lf

BYTE'Pleaseinputanumberthatisfrom0to10',cr,lf,0

stringBYTE20DUP(?

resultBYTE'Theansweris'

valueBYTE11DUP(?

BYTEcr,lf,0

.CODE;startofmainprogramcode

_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

 

教师签名:

年月日

年级

 2012

班号

 学号

专业

计算机科学与技术

 姓名

实验名称

串操作指令的使用

实验

类型

设计型

综合型

创新型

目的

掌握串操作指令的用法,注意DF标识位以及源串、目标串的存储和改变。

要求

结合前面所学知识,综合进行串操作指令的使用。

题目:

设有一字符串已存放在STRBUF为首址的数据区中,编一程序找出其中的′.′字符,并将其存放地址输出。

.386

.MODELFLAT

ExitProcessPROTONEAR32stdcall,dwExitCode:

DWORD

INCLUDEio.h;headerfileforinput/output

crEQU0dh;carriagereturncharacter

LfEQU0ah;linefeed

.STACK4096;reserve4096-bytestack

.DATA

prompt1BYTE"Thisprogramwillchecka.fromastring,andoutputthepositionofthe.",cr,lf

BYTE"Enterastring:

",cr,Lf,0

stringBYTE80DUP(?

answer1BYTE"Thestringnotexistthecharacter.",cr,Lf,0

answer2BYTEcr,lf,"Thepostionofthe.is:

"

PosBYTE6DUP(?

),0

 

.CODE

_start:

outputprompt1

inputstring,80;readstring

leaeax,string

pusheax

callstrpos

INVOKEExitProcess,0;exitwithreturncode0

(写不完时,可另加附页。

strposPROCNEAR32

pushebp

movebp,esp

pushedi

movedi,[ebp+8]

movebx,-1

moval,'.'

movecx,0

cld

Forcount:

cmpBYTEPTR[edi],0

jeendfor

incecx

scasb

jneForcount

Found:

movebx,ecx

dtoaPos,ebx

outputanswer2

jmpForcount

endfor:

cmpebx,0

jgL2

L1:

outputanswer1

L2:

popedi

popebp

ret4

strposENDP

PUBLIC_start

END

 

教师签名:

年月日

备注:

源代码附后,源代码要求有注释说明

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

当前位置:首页 > 初中教育 > 中考

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

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