1、l汇编过程就是将汇编语言源程序转换成机器能够识别汇编过程就是将汇编语言源程序转换成机器能够识别的目标代码程序,即的目标代码程序,即OBJOBJ的二进制文件。还可生成扩展名的二进制文件。还可生成扩展名为为.LST.LST的列表文件,扩展名为的列表文件,扩展名为.CRF.CRF的符号索引文件。的符号索引文件。MASM5.0MASM5.0提供的汇编程序是提供的汇编程序是MASM.EXEMASM.EXE,MASM6.0MASM6.0提提供的汇编语言是供的汇编语言是ML.EXEML.EXE。二者的区别是:lMASM.EXEMASM.EXE仅能实现源程序的汇编,不能自动调用连接仅能实现源程序的汇编,不能自
2、动调用连接程序;而程序;而ML.EXEML.EXE既能实现对源程序的汇编,也可在汇编既能实现对源程序的汇编,也可在汇编结束后自动调用连接程序。结束后自动调用连接程序。具体汇编过程如下:在在DOSDOS状态下,键入状态下,键入MASMMASM,调入宏汇编程序。,调入宏汇编程序。调入以后,先显示版本号,然后依次提出四个问题,调入以后,先显示版本号,然后依次提出四个问题,如下所示:如下所示:Source Filename.ASM:SampleSource Filename.ASM:Sample第一行询问汇编语言源程序名。第一行询问汇编语言源程序名。Object Filename Sample.OBJ
3、:询问目标程序文件名,括号内为机器默认的文件名,询问目标程序文件名,括号内为机器默认的文件名,通常直接回车,表示采用默认的文件名。通常直接回车,表示采用默认的文件名。Source Listing Nul.LST:Sample Source Listing Nul.LST:Sample询问是否要建立列表文件,该文件列出汇编后的目标询问是否要建立列表文件,该文件列出汇编后的目标代码以及与其有关的地址、源语句和符号表,可供打代码以及与其有关的地址、源语句和符号表,可供打印输出。若需要这个文件则输入文件名并回车。印输出。Cross Reference Nul.CRF:SampleCross Refer
4、ence Nul.CRF:Sample 询问是否要建立交叉引用文件,该文件是一个中询问是否要建立交叉引用文件,该文件是一个中间文件,可供间文件,可供CREF.EXECREF.EXE程序建立一个扩展名为程序建立一个扩展名为.REF.REF的的引用表文件,以便用户了解源程序中符号和变量的引引用表文件,以便用户了解源程序中符号和变量的引用情况。若需要则输入文件名,若不需要则直接回车。用情况。当用户回答了第四个询问后,汇编程序就对源程序当用户回答了第四个询问后,汇编程序就对源程序进行汇编。进行汇编。3 3连接连接所谓连接是用连接程序所谓连接是用连接程序LINK.EXELINK.EXE把若干个经汇编后产
5、把若干个经汇编后产生的生的.OBJ.OBJ文件及指定的库文件连接起来,产生可执行文件及指定的库文件连接起来,产生可执行的的.EXE.EXE文件。文件。在在DOSDOS状态下,键入状态下,键入LINKLINK,调入连接程序。调入以后,调入连接程序。调入以后,先显示版本号,然后依次提示四个问题,如下所示:先显示版本号,然后依次提示四个问题,如下所示:l Object Modules.OBJ:SampleObject Modules.OBJ:Sample第一行询问要连接的目标文件名,如果有多个要第一行询问要连接的目标文件名,如果有多个要连接的目标文件,应一次输入,各目标文件名之连接的目标文件,应一次
6、输入,各目标文件名之间用间用“+”号相连号相连l Run File Sample.EXE:Run File Sample.EXE:第二个提示询问要产生的可执行文件名,一般直第二个提示询问要产生的可执行文件名,一般直接回车就采用了括号内默认的文件名接回车就采用了括号内默认的文件名 List File Nul.MAP:SampleList File Nul.MAP:Sample 第三个提示询问是否产生扩展名为第三个提示询问是否产生扩展名为MAPMAP的输出文件,的输出文件,这是一个连接程序的列表文件,又称为连接映象,它这是一个连接程序的列表文件,又称为连接映象,它给出每个段在存储器中的分配情况给出
7、每个段在存储器中的分配情况 Libraries .LIB:Libraries .LIB:最后提示是否用到库文件,要求用户输入源程序最后提示是否用到库文件,要求用户输入源程序访问的库文件名。所谓库文件,就是若干可重定位的访问的库文件名。所谓库文件,就是若干可重定位的目标代码的集合,它可以由库管理程序目标代码的集合,它可以由库管理程序LIB.EXELIB.EXE建立和建立和修改。若没有库文件,则直接输入回车即可。修改。4 4调试调试经过上述汇编、连接后产生的经过上述汇编、连接后产生的.EXE.EXE可执行文件可可执行文件可在在DOSDOS状态下直接输入文件名运行该程序。如果出状态下直接输入文件名运
8、行该程序。如果出现错误,可用动态调试程序现错误,可用动态调试程序DEBUGDEBUG进行调试。找出进行调试。找出错误后,再重复上述过程,直至程序能正确运行错误后,再重复上述过程,直至程序能正确运行为止。为止。数据的输入与输出输入一个字符:输入一个字符:使使用用中中断断21H21H,功功能能调调用用号号为为01H01H,将将输输入入任任意意键键入入的的字字符,存入符,存入ALAL中(中(ASCIIASCII码)码)MOV AHMOV AH,01H01HINT 21HINT 21H输入字符串:输入字符串:DX=DX=缓冲区首址缓冲区首址 LEA DXLEA DX,BUFBUFMOV AHMOV A
9、H,0AH0AHINT 21HINT 21H例:单字符输入例:单字符输入 (AH=1)(AH=1)get-key:mov ah,1 get-key:mov ah,1 int 21h int 21h cmp al,Y cmp al,Y je yes je yes cmp al,N cmp al,N je no je no jne get_key jne get_key yes:yes:no:例:输入字符串例:输入字符串 (AH=0ah)(AH=0ah)缓冲区的第一个字节保存最大字缓冲区的第一个字节保存最大字符数,这个最大字符数由用户程序符数,这个最大字符数由用户程序给出。第二个字节是实际输入字符
10、给出。第二个字节是实际输入字符的个数,由功能的个数,由功能A A填入,不是由用填入,不是由用户填入。户填入。在这两个字节之后,字符串按字节在这两个字节之后,字符串按字节存入缓冲区,结束字符串的回车符存入缓冲区,结束字符串的回车符0DH0DH还要占用一个字节。还要占用一个字节。(1)maxlen db 32maxlen db 32 actlen db?actlen db?string db 32 dup (?)string db 32 dup (?)lea dx,maxlen lea dx,maxlen mov ah,0ah mov ah,0ah int 21h int 21h20maxlena
11、ctlenHOWAAREYOU20200dstring0b(DX)输出一个字符:输出一个字符:使用使用0202号功能,将号功能,将DLDL中的字符显示出来中的字符显示出来MOV DLMOV DL,X XMOV AHMOV AH,02H02HINT 21HINT 21H输出字符串:输出字符串:DX=DX=串地址串地址 串必须以串必须以$结束,光标跟随串移动结束,光标跟随串移动LEA DXLEA DX,DATADATAMOV AHMOV AH,09H09HINT 21HINT 21H例:显示单个字符例:显示单个字符 (AH=2)(AH=2)mov ah,2 mov ah,2 mov dl,mov
12、dl,A A int 21h int 21h例:显示字符串例:显示字符串 (AH=9)(AH=9)string db string db HELLOHELLO,0dh,0ah,0dh,0ah,$lea dx,string lea dx,string mov ah,9 mov ah,9 int 21h int 21hEX1 EX1 从从键键盘盘上上键键入入2020个个字字符符,将将键键入入的的字字符符按按相相同同的的顺顺序序显显示示出出来来。键键入入时时,每每键键入入一一个个字字符符,输输出出一一个个空格。空格。把把主主程程序序建建立立为为过过程程,由由DOSDOS调调用用该该过过程程,进进入入
13、程程序序后后,首首先先把把DSDS的的内内容容和和0 0作作为为段段地地址址和和偏偏移移地地址址入入栈栈,以便在程序结束时用以便在程序结束时用RETRET指令返回指令返回DOSDOS。若若在在主主程程序序开开始始时时没没有有在在堆堆栈栈中中建建立立返返回回信信息息,则则在在程程序序结结束束时时就就不不能能直直接接用用RETRET返返回回指指令令,应应该该使使用用编编号为号为4C4C的功能调用返回的功能调用返回DOSDOS。MOV AXMOV AX,4CH 4CH INT 21H INT 21HDSEGSEGMENTDATADB20DUP(?)DSEGENDSSTACK1SEGMENTDB200DUP(0)STACK1ENDSCSEGSEGMENTY
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1