资源描述:
《汇编语言 实验2》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、汇编语言程序设计实验二MASM汇编器使用学号:姓名:1.使用MASM为DOS和Windows编程:a)DOS中运行的程序:先输入程序,.386.modelflat,stdcalloptioncasemap:noneincludemasm32includewindows.incincludemasm32includekernel32.incincludemasm32includemasm32.incincludelibmasm32libkernel32.libincludelibmasm32libmasm32.lib.dataHelloWorlddb"HelloW
2、orld!",0.codestart:invokeStdOut,addrHelloWorldinvokeExitProcess,0endstart再打开DOS命令提示符界面,输入“masm32binml/c/Zd/coffhello.asm”在没错误情况下,可以连接文件,输入“masm32binLink/SUBSYSTEM:CONSOLEhello.obj“,在工作目录中会产生可运行文件Hello.exe,运行并记录运行结果。b)Windows中运行的程序:先修改程序,.386.modelflat,stdcalloptioncasemap:noneincludemasm32i
3、ncludewindows.incincludemasm32includekernel32.incincludemasm32includeuser32.incincludelibmasm32libkernel32.libincludelibmasm32libuser32.lib.dataHelloWorlddb"HelloWorld!",0.codestart:invokeMessageBox,NULL,addrHelloWorld,addrHelloWorld,MB_OKinvokeExitProcess,0endstart用命令“masm32binml/c
4、/Zd/coffhellow.asm”编译程序,再用命令“masm32binLink/SUBSYSTEM:WINDOWShellow.obj”连接程序,运行并记录运行结果。1.使用Debug调试编辑执行汇编代码的步骤:a)使用文本编辑器(如:Notepad),编辑汇编程序,并将程序在工作子目录中,保存为以“.asm”为后缀的文件中。b)打开DOS命令提示符界面,在工作子目录下输入“ml.asm”命令,产生“.exe”可执行文件。注意,过程中“.obj”文件也会产生,如果汇编程序中有过多出错指令,“.exe”文件就不会产生。c)使用“debut.e
5、xe”执行并debug程序。2.程序模板:DATA_HERESEGMENTDATA_ADW1DUP(0);在数据段中预留位置DATA_BDW1DUP(0);预留另一个位置;预留位置的初始值都是0HDATA_HEREENDSSTACK_HERESEGMENTSTACKDW100DUP(0);内存中堆栈位置TOP_STACKLABELWORD;栈顶位置命名STACK_HEREENDSCODE_HERESEGMENTASSUMECS:CODE_HERE,DS:DATA_HERE,SS:STACK_HERESTART:MOVAX,DATA_HEREMOVDS,AX;DS寄存器初始化MOVAX,STA
6、CK_HEREMOVSS,AX;SS寄存器初始化MOVSP,OFFSETTOP_STACK;初始化堆栈指针;;在此顺序输入程序指令;INT3H;断点CODE_HEREENDSENDSTART1.解析Intelx86指令:a)将模板程序复制为part_a.asmb)将表1中的代码复制到程序中c)生成“part_a.exe”并debug这个程序d)使用“-u”分解程序e)填表解释每条指令f)回答问题:i.将表格1空白处填满ii.一些指令不包括ModR/M字节,指出这些指令iii.解释段覆盖前缀字节,解释为什么指令MOVDS:[DI+0203H]中,BX不需要前缀字节,而指令MOVDS:[BP+2
7、H]中,DX需要前缀字节?表格1指令段覆盖前缀字节(HEX)操作码(OP)ModRegr/m位移量字节数ADDAX,BXADCBX,ES:[SI]TESTAX,0305HMOVDS:[BP+2h],DXMOVDS:[DI+0203H],BXANDAL,CHORAH,03HROLAX,CLJMPFINISH(JMP跳向程序最后一条指令)5.使用汇编语言程序解方程是一件不容易的事情。一般使用计算机来求解,都是编写