资源描述:
《汇编实验报告 实验一 汇编程序的汇编及运行.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一汇编程序的汇编及运行1.实验目的和要求(1)熟悉汇编程序的汇编、连接、执行过程(2)生成LST文件,查看LST文件(3)生成OBJ文件,修改语法错误(4)生成EXE文件(5)执行2.实验环境IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS2.0以上;调试程序:DEBUG.COM;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM.EXE);连接装配程序:LINK.EXE;交叉引用程序:CREF.EXE(可有可无)。3.实验内容及实验数据记录(1)将数据段输入,取名1.txt,保存在MASM文件夹下。生成LST文件,(不必
2、连接、运行)用EDIT查看1.LST文件。试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATASEGMENTORG20HNUM1=8NUM2=NUM1+10HDA1DB‘IBMPC’DA2DB0AH,0DHCOUNTEQU$-DA1DATAENDSEND(2)输入有错误的文件,修改错误语句。(MASM没有出现错误即可。不必连接、运行。)DATASEGMENTVAR1DB0,25,ODH,300VAR2DB12H,A4H,6BHVAR3DB’ABCDEF’VAR4DW1234H,5678HVAR5DW10HDUP(?)DATAENDSCODESEGMEN
3、TASSUMECS:CODE,DE:DATABEINGMOVAX,DATAMOVDS,AXLEASI,VAR5MOVBX,OFFSETVAR2MOV[SI],0ABHMOVAX,VAR1+2MOV[BX],[SI]MOVVAR5+4,VAR4MOVAH,4CHINT21HCODEENDSENDSTART(3)输入正确的程序,汇编、连接、运行STACKSSEGMENTSTACKDW128DUP(?)STACKSENDSDATASSEGMENTSTRINGDB‘WELCOME!’,13,10,‘$’DATASENDSCODESSEGMENTASSUMECS:CODES,DS:
4、DATASSTART:MOVAX,DATASMOVDS,AXLEADX,STRINGMOVAH,9INT21HMOVAH,4CHINT21HCODESENDSENDSTART1.算法描述及实验步骤1.(1)生成1.st文件(2)用EDIT查看文件2.修改后正确算法:DATASEGMENT
VAR1DB0,25,0DH,30
VAR2DB12H,0A4H,6BH
VAR3DB'ABCDEF'
VAR4DW1234H,5678H
VAR5DW10HDUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
BEING:MOVAX,DAT
5、A
MOVDS,AX
LEASI,VAR5
MOVBX,OFFSETVAR2
MOVbyteptr[SI],0ABH
MOVAL,VAR1+2
MOVAX,[SI]
MOV[BX],AX
MOVAX,VAR4
MOVVAR5+4,AX
MOVAH,4CH
INT21H
CODEENDS
ENDBEING5.调试过程1.程序没有错误,结果:2.程序运行出现错误:问题及改正:(1).2.asm(2):errorA2009:Symbolnotdefined:ODH表示没有定义ODH;出错语句VAR1DB0,25,ODH,300,这里的ODH应该为16进制数的0DH。修改后仍提示
6、错误,因为300越界,可改为30。(2).2.asm(3):errorA2009:Symbolnotdefined:A4H没有定义A4H这个变量
出错语句“VAR2DB12H,A4H,6BH”16进制中字母开头的16进制数开头必须加上“0”,所以必须在A4H之前加0.,将其改为0A4H。(3).2.asm(9):errorA2009:Symbolnotdefined:DS是存储代码段的,所以将DE改为DS。(4).2.ASM(10):errorA2105:Expected:instructionordirective;问题:这是符号的漏写了,语句“BEINGMOVAX,D
7、AT”中BEING后面漏了“:”,所以应加上“:”。(5).2.asm(14):errorA2035:Operandmusthavesize没有指明大小
出错语句“MOV[SI],0ABH”立即数存入内存中,必须指明大小;所以必须在[SI]前加入byteptr改为“MOVbyteptr[SI],0ABH”
(6).2.asm(15):errorA2068:Cannotaddresswithsegmentregister
出错语句“MOVAX,VAR1+2”VAR1的地址+2后只占8位空间,而AX寄存器为16位,所以位数不匹配,