福建农林大学汇编实验四子程序设计剖析Word文件下载.docx
- 文档编号:18982977
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:14
- 大小:134.86KB
福建农林大学汇编实验四子程序设计剖析Word文件下载.docx
《福建农林大学汇编实验四子程序设计剖析Word文件下载.docx》由会员分享,可在线阅读,更多相关《福建农林大学汇编实验四子程序设计剖析Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,0
MOVCX,3
LL:
MOVDL,MAG[SI]
CALLMADD
INCSI
LOOPLL
MOVAH,4CH
INT21H
MADDPROC
MOVAH,02H
INT21H
RET
MADDENDP
CODEENDS
ENDSTART
2)阅读S31.ASM和S32.ASM两个模块中的程序,并分别汇编,然后连接成一个可执行文件S31.EXE。
具体步骤如下:
MASMS31.ASM(分别汇编)
MASMS32.ASM
LINKS31S32(将两个文件连接成为一个文件名为S31)
S31.EXE(运行)
3)编程:
利用主程序调用子程序,比较BUF1和BUF2缓冲区中不相等的字符,并将不相等的字符显示出来。
(也可以将找到的不相等字符逐个显示,用INT21H的02功能调用)
4)编程:
子程序搜索指定字符缓冲区中是否有N,如果有用Y替代。
调用子程序将BUF1,BUF2,BUF3中的N全部用Y替代。
附源程序:
NAMES31.ASM
不同模块间的段间调用。
从键盘输入2位非压缩BCD数,存入AX寄存器中。
为了将其转换为二进制数,编写一个子程序TRAN。
显示子程序DISP完成将16进制数转换为对应的ASCII码并显示该字符,显示子程序在另一模块S32中。
输入数据为00时结束。
EXTRNDISP:
FAR
CODESEGMENTPARA‘CODE’
CODE
MOVAH,01H
MOVBL,AL
MOVAH,AL
MOVAL,BL
CMPAX,3030H
JEEXIT
CALLNEARPTRTRAN
CALLFARPTRdisp
JMPSTART
EXIT:
MOVAH,4CH
TRANPROCNEAR;
将输入的ASCII码转换成2进制数
ANDAX,0F0FH;
将ASCII码转换成非压缩BCD码,
;
高位在AL中
MOVBL,AH
MOVCL,10D
MULCL
ADDAL,BL
TRANENDP
ENDSTART
NAMES32.ASM
PUBLICDISP
CODE1SEGMENTPARA‘CODE’
CODE1
DISPPROCFAR
MOVBH,00
MOVCH,4
ROLL:
MOVCL,4
ROLBX,CL
MOVDL,BL
ANDDL,0FH
CMPDL,9
JBENEXT1
ADDDL,07H
NEXT1:
ADDDL,30H
MOVAH,02H
DECCH
JNZROLL
DISPENDP
CODE1ENDS
END
5)编一个子程序:
输入一个字符,显示出来。
6)编一个子程序:
输入一个字符串,显示出来。
4.算法描述及实验步骤
题1:
依题输入相应的代码如下,运行->
调试->
题3及4,5,6按要求编写即可
5.调试过程
无
6.实验结果
【题一】
实验结果如下
有上图可知,当程序运行到call语句之前,SP一直保持0000不变,而IP则一直在增加。
继续单步执行程序
由上图,当程序在RET语句之前运行时,SP、IP每次都是分别按2和1递增,当运行到RET语句时,SP还是按照2来递增,而IP出现了变化,这次却减少了很多,说明指针回撤执行下一个循环。
【题二】
按要求把s31s32分别汇编连接形成一个s31.exe文件,如下
汇编s31
汇编s32
Links31s32
形成一个s31.exe的文件
【题三】编写代码如下
运行结果如下图
BUF1=’HELLOWORLD!
’
BUF2=’HOLLOWOLLD~’比较可知BUF1与BUF2中不同的字符有ER!
结果与预期一致
【题四】
编写代码如下
分析:
有图可知,结果将BUF1和BUF2中的n改为了y完成题目要求.
【题五】编一个子程序:
输入一个字符,显示出来
【题六】编一个子程序:
输入一个字符串,显示出来
7.总结
通过本次上机实验,学会了子程序的编写和主子程序的调用,并且掌握了在不同模块间程序的调用和调试。
在本次实验中,再一次加深了对汇编程序的汇编以及连接运行的方法。
附录:
【题3代码】
DATASEGMENT
BUF1DB'
HELLOWORLD!
'
LEN=$-BUF1
BUF2DB'
HOLLOWOLLD~'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF1
LEADI,BUF2
MOVCX,LEN
CALLCMPP
MOVAH,4CH
INT21H
CMPPPROCNEAR;
子程序
L1:
MOVDL,[SI]
CMPDL,[DI]
JZNEXT
MOVAH,02H
INT21H
NEXT:
INCSI
INCDI
LOOPL1
RET;
子程序返回
CMPPENDP
CODEENDS
ENDSTART
【题4代码】
BUF1DB'
aaanaannaaan'
0ah,0dh,'
$'
LEN1=$-BUF1
bbnnnbbbbnnn'
'
LEN2=$-BUF2
CODESEGMENT
ASSUMECS:
MOVDS,AX
LEASI,BUF1
MOVCX,LEN1
CALLCMMP
LEASI,BUF2
MOVCX,LEN2
MOVAH,4CH
INT21H
CMMPPROC
MOVDX,SI
CMP1:
CMPBYTEPTR[SI],'
n'
JNENOTN
MOVAL,'
y'
MOV[SI],AL
NOTN:
INCSI
LOOPCMP1
MOVAH,09H;
显示字符串
RET
CMMPENDP
CODEENDS
ENDSTART
【题5代码】
STACKSSEGMENTSTACK
DW128DUP(?
)
STACKSENDS
CSEGSEGMENTPARAPUBLIC'
CODE'
CSEG
START:
MOVAH,01
INT21H
MOVDL,AL
MOVAH,02
MOVAL,0
MOVAH,4CH
CSEGENDS
ENDSTART
【题6代码】
STACKSSEGMENTSTACK
DW128DUP(?
)
STACKSENDS
DSEGSEGMENT
MSGDB0DH,0AH,'
BUFDB20,?
20DUP(?
DSEGENDS
ASSUMECS:
CSEG,DS:
DSEG
MOVAX,DSEG
MOVDS,AX
LEADX,BUF
MOVAH,0AH
LEADX,MSG
MOVAH,09
LEADX,BUF+2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 福建 农林 大学 汇编 实验 子程序 设计 剖析