- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
专业
?姓名
实验名称
8086汇编实验六宏指令
实验
类型
设计型
综合型
创新型
√
实
验
目
的
或
要
求
实验目的:
掌握宏的编写与调用,以及其展开的过程,注意区分宏和过程的不同之处。
实验要求:
(1)编写宏指令
(2)在主程序中调用宏指令
(3)实现主程序与宏指令的参数传递
(4)练习编写宏并通过.LST文件查看宏的展开情况。
.实验1题目:用宏实现摄氏温度到华氏温度的转换
实验要求:定义一个宏,实现输入摄氏温度转换为华氏温度转换公式为F=(9/5)*C+32,并存在EAX中。
提示:在进行公式计算时,先用摄氏温度C*9,再加上取整因子2,再进行除5的运算,即整个公式演变为F=(C*9+2)/5+32
.386
.MODELFLAT
fahrenheitMACRO
Outputprompt1
Inputstring,40
atodstring
imuleax,9
addeax,2
movebx,5
cdq
idivebx
addeax,32
dtoaresult,eax
Outputprompt2
ENDM
ExitProcessPROTONEAR32stdcall,dwExitCode:DWORD
includeio.h;包含有input/output宏的文件
crequ0dh;回车符
Lfequ0ah;换行符
maxNumequ100h;数组最大个数
.STACK4096;reserve4096-bytestack
.DATA
stringbyte40dup(?)
prompt1bytecr,Lf,PleaseentertheCelsiustemperature:,0
prompt2bytecr,Lf,ThetemperatureinFahrenheitis
resultbyte40dup(?),0
.CODE
_start:
fahrenheit
INVOKEExitProcess,0;返回0
PUBLIC_start
END
实
验
原
理
(
算
法
流
程
)
实验2题目:写一个Max1宏定义,该宏有两个参数,第一个参数为存储器中一个串的地址,该串元素为字长度,第二个参数为串的元素个数。该宏代码将求解这个串中元素最大值,最大值放在AX。
.386
.MODELFLAT
Max1MACROparam1,param2
localloopIfMax,endif
movecx,param2
dececx
movax,[param1]
addparam1,2
loopIfMax:
cmpax,[param1]
jgendif
movax,[param1]
endif:
addparam1,2
looploopIfMax
ENDM
ExitProcessPROTONEAR32stdcall,dwExitCode:DWORD
includeio.h;包含有input/output宏的文件
crequ0dh;回车符
Lfequ0ah;换行符
maxNumequ100h;数组最大个数
.STACK4096;reserve4096-bytestack
.DATA
ArrayWORDmaxNumdup(?)
countdword?
stringbyte40dup(?)
prompt1bytecr,Lf,Howmanynumbersdoyouneedtoenter:,0
prompt2bytenumber1=,0
prompt3bytecr,Lf,Themaximumvalueinthearrayis
valuebyte40dup(?),0
.CODE
_start:
Outputprompt1
Inputstring,40
atodstring
movcount,eax
movecx,co
文档评论(0)