汇编语言程序上机.ppt
- 文档编号:18070970
- 上传时间:2023-08-09
- 格式:PPT
- 页数:27
- 大小:143KB
汇编语言程序上机.ppt
《汇编语言程序上机.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序上机.ppt(27页珍藏版)》请在冰点文库上搜索。
汇编语言程序上机过程,建立汇编语言的工作环境建立ASM文件用ASM(或MASM)程序产生OBJ文件用LINK程序产生EXE文件程序的执行,一建立汇编语言的工作环境为了运行汇编语言程序至少要在磁盘上建立以下程序文件:
编辑程序,文件名EDIT.COM汇编程序,文件名MASM.EXE连接程序,文件名LINK.EXE调试程序,文件名DEBUG.EXE下面是三个可选程序:
LIB.EXE,库管理程序CREF.EXE,符号索引文件处理程序EXE2BIN.EXE,将EXE转换为COM的文件格式转换程序,二上机操作过程一个源程序的上机操作过程由编辑、汇编、连接和调试四个部分组成。
1编辑汇编语言源程序的编写输入可以在DOS环境下的编辑软件EDIT中完成也可以在目前流行的各种文字处理软件、高级语言编辑环境及数据库编辑环境中完成注意:
1.对编辑完成的源程序在存盘时扩展名必须加写.ASM2.一定要严格遵守汇编语言书写格式及段结构的格式来编写程序,2汇编汇编程序的主要功能包括展开宏指令,检查源程序的语法错误,生成目标代码程序。
汇编过程就是将汇编语言源程序转换成机器能够识别的目标代码程序,即OBJ的二进制文件。
还可生成扩展名为.LST的列表文件,扩展名为.CRF的符号索引文件。
MASM5.0提供的汇编程序是MASM.EXE,MASM6.0提供的汇编语言是ML.EXE。
二者的区别是:
MASM.EXE仅能实现源程序的汇编,不能自动调用连接程序;而ML.EXE既能实现对源程序的汇编,也可在汇编结束后自动调用连接程序。
具体汇编过程如下:
在DOS状态下,键入MASM,调入宏汇编程序。
调入以后,先显示版本号,然后依次提出四个问题,如下所示:
SourceFilename.ASM:
Sample第一行询问汇编语言源程序名。
ObjectFilenameSample.OBJ:
询问目标程序文件名,括号内为机器默认的文件名,通常直接回车,表示采用默认的文件名。
SourceListingNul.LST:
Sample询问是否要建立列表文件,该文件列出汇编后的目标代码以及与其有关的地址、源语句和符号表,可供打印输出。
若需要这个文件则输入文件名并回车。
CrossReferenceNul.CRF:
Sample询问是否要建立交叉引用文件,该文件是一个中间文件,可供CREF.EXE程序建立一个扩展名为.REF的引用表文件,以便用户了解源程序中符号和变量的引用情况。
若需要则输入文件名,若不需要则直接回车。
当用户回答了第四个询问后,汇编程序就对源程序进行汇编。
3连接所谓连接是用连接程序LINK.EXE把若干个经汇编后产生的.OBJ文件及指定的库文件连接起来,产生可执行的.EXE文件。
在DOS状态下,键入LINK,调入连接程序。
调入以后,先显示版本号,然后依次提示四个问题,如下所示:
ObjectModules.OBJ:
Sample第一行询问要连接的目标文件名,如果有多个要连接的目标文件,应一次输入,各目标文件名之间用“+”号相连RunFileSample.EXE:
第二个提示询问要产生的可执行文件名,一般直接回车就采用了括号内默认的文件名,ListFileNul.MAP:
Sample第三个提示询问是否产生扩展名为MAP的输出文件,这是一个连接程序的列表文件,又称为连接映象,它给出每个段在存储器中的分配情况Libraries.LIB:
最后提示是否用到库文件,要求用户输入源程序访问的库文件名。
所谓库文件,就是若干可重定位的目标代码的集合,它可以由库管理程序LIB.EXE建立和修改。
若没有库文件,则直接输入回车即可。
4调试经过上述汇编、连接后产生的.EXE可执行文件可在DOS状态下直接输入文件名运行该程序。
如果出现错误,可用动态调试程序DEBUG进行调试。
找出错误后,再重复上述过程,直至程序能正确运行为止。
数据的输入与输出,输入一个字符:
使用中断21H,功能调用号为01H,将输入任意键入的字符,存入AL中(ASCII码)MOVAH,01HINT21H输入字符串:
DX=缓冲区首址LEADX,BUFMOVAH,0AHINT21H,例:
单字符输入(AH=1)get-key:
movah,1int21hcmpal,Yjeyescmpal,Njenojneget_keyyes:
no:
例:
输入字符串(AH=0ah)缓冲区的第一个字节保存最大字符数,这个最大字符数由用户程序给出。
第二个字节是实际输入字符的个数,由功能A填入,不是由用户填入。
在这两个字节之后,字符串按字节存入缓冲区,结束字符串的回车符0DH还要占用一个字节。
(1)maxlendb32actlendb?
stringdb32dup(?
)leadx,maxlenmovah,0ahint21h,0b,(DX),输出一个字符:
使用02号功能,将DL中的字符显示出来MOVDL,XMOVAH,02HINT21H输出字符串:
DX=串地址串必须以$结束,光标跟随串移动LEADX,DATAMOVAH,09HINT21H,例:
显示单个字符(AH=2)movah,2movdl,Aint21h例:
显示字符串(AH=9)stringdbHELLO,0dh,0ah,$leadx,stringmovah,9int21h,EX1从键盘上键入20个字符,将键入的字符按相同的顺序显示出来。
键入时,每键入一个字符,输出一个空格。
把主程序建立为过程,由DOS调用该过程,进入程序后,首先把DS的内容和0作为段地址和偏移地址入栈,以便在程序结束时用RET指令返回DOS。
若在主程序开始时没有在堆栈中建立返回信息,则在程序结束时就不能直接用RET返回指令,应该使用编号为4C的功能调用返回DOS。
MOVAX,4CHINT21H,DSEGSEGMENTDATADB20DUP(?
)DSEGENDSSTACK1SEGMENTDB200DUP(0)STACK1ENDSCSEGSEGMENTYYYPROCFARASSUMECS:
CSEG,DS:
DSEG,SS:
STACK1,START:
PUSHDSSUBAX,AXPUSHAXMOVAX,DSEGMOVDS,AXLEASI,DATAMOVCX,20LP1:
MOVAH,01HINT21HMOVSI,ALINCSIMOVDL,20H;空格MOVAH,02H,INT21HLOOPLP1LEASI,DATAMOVCX,14HLP2:
MOVDL,SIMOVAH,02HINT21HINCSILOOPLP2RETYYYENDPCSEGENDSENDSTART,DSEGSEGMENTDATADB20DUP(?
)DSEGENDSSTACK1SEGMENTDB200DUP(0)STACK1ENDSCSEGSEGMENTASSUMECS:
CSEG,DS:
DSEG,SS:
STACK1START:
MOVAX,DSEGMOVDS,AXLEASI,DATAMOVCX,14H,LP1:
MOVAH,01HINT21HMOVSI,ALINCSIMOVDL,20HMOVAH,02HINT21HLOOPLP1LEASI,DATA;若要相反顺序输出,此句省略MOVCX,14HMOVDL,0DH;回车MOVAH,02HINT21H,MOVDL,0AH;换行MOVAH,02HINT21HLP2:
MOVDL,SIMOVAH,02HINT21HINCSI;若要相反顺序输出,此句改为DECSILOOPLP2MOVAH,4CHINT21HCSEGENDSENDSTART,输入个数不定,当输入空格时停止DSEGSEGMENTDATADB20DUP(?
)DSEGENDSSTACK1SEGMENTDB200DUP(0)STACK1ENDSCSEGSEGMENTASSUMECS:
CSEG,DS:
DSEG,SS:
STACK1START:
MOVAX,DSEGMOVDS,AXLEASI,DATAMOVBX,0,LP1:
MOVAH,01HINT21HMOVSI,ALINCSIINCBXCMPAL,20HJELP2MOVDL,20HMOVAH,02HINT21HJMPLP1,LP2:
MOVCX,BXLEASI,DATALP3:
MOVDL,SIMOVAH,02HINT21HINCSILOOPLP3MOVAH,4CHINT21HCSEGENDSENDSTART,EX1从键盘上键入20个字符,将键入的字符按相反的顺序显示出来。
键入时,每键入一个字符,输出一个空格。
EX2编写人机对话程序WHATISYOURNAME?
输入:
Mynameis.EX3:
将变量A=10011010B的数据以二进制形式在显示器上输出。
例、1+2+3+100=?
并显示出来。
DATASEGMENTBUFDB8DUP(0);最大长度8,初值0DATAENDSSTACK1SEGMENTDB200DUP(0)STACK1ENDSCODESEGMENTASSUMECS:
CODE,DS:
DATA,SS:
STACK1,START:
MOVAX,DATAMOVDS,AXMOVBX,1;加数MOVAX,0;和MOVCX,100;次数L1:
ADDAX,BXINCBXLOOPL1;5050MOVCX,0MOVBX,10LEASI,BUF,L2:
MOVDX,0DIVBXPUSHDX;保存余数INCCX;保存个数计数ORAX,AXJNEL2;商AX不为0则循环L3:
POPDXADDDL,30HMOVSI,DLINCSIDECCXJNEL3,MOVSI,BYTEPTR0DHMOVSI+1,BYTEPTR0AHMOVSI+2,BYTEPTR$LEADX,BUFMOVAH,09HINT21HMOVAH,4CHINT21HCODEENDSENDSTART,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序 上机