汇编语言程序设计实验教程第二章实验报告Word下载.docx
《汇编语言程序设计实验教程第二章实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计实验教程第二章实验报告Word下载.docx(7页珍藏版)》请在冰豆网上搜索。
dx
把dl的内容保存到堆栈中去。
在显示空白或回车、换行符后用指令
pop
恢复dl寄存器的原始内容。
4.程序清单:
codesegment
assumecs:
code
start:
movdx,0010h
next:
movcx,10h
loop1:
movah,02h
int21h
incdx
pushdx
movdl,0
popdx
looploop1
movdl,0ah
movdl,0dh
cmpdx,100h
jbnext
movah,4ch
codeends
endstart
5.运行结果如下:
6.实验总结:
通过本次实验我深刻的知道用汇编语言编译程序的方法,掌握了如何合理的利用各个寄存器进行程序的控制操作,初步了解到循环程序的控制方法,以及dos中断调用的基本要领对学习汇编语言有了非常好的帮助作用!
汇编语言
实验二
查找匹配字符串
一、目的
查找匹配字符串SEARCH
二、实验内容
程序接收用户键入的一个关键字以及一个句子。
如果句子中不包含关键字则显示‘NOmatch!
’;
如果句子中包含关键字则显示‘MATCH’,且把该字在句子中的位置用十六进制数显示出来。
流程图
不匹配,输出
开始
三、设计和编码
DATASEGMENT
mess1
DB'
Enterkeyword:
'
'
$'
mess2
EnterSentence:
mess3
Matchatlocation:
mess4
NOTMATCH.'
13,10,'
mess5
Hifthesentence'
change
DB13,10,'
stoknin1labelbyte
max1db10
act1db?
stokn1db10dup(?
)
stoknin2labelbyte
max2db50
act2db?
stokn2db50dup(?
)
DATAENDS
STACKSSEGMENT
;
此处输入堆栈段代码
STACKSENDS
CODESEGMENT
*************************************代码段
mainprocfar
code,ds:
data,es:
data
START:
pushds
subAX,AX
subBX,BX
subDI,DI
subSI,SI
pushAX
;
为返回dos并清空后面要用到的寄存器
MOVAX,DATA
MOVDS,AX
LEADX,mess1
MOVah,09
INT21h
输出Enterkeyword
LEADX,stoknin1
MOVah,0ah
用21号中段的0ah号功能获取关键字
INT21h
cmpact1,0
jeexit
如果为空直接退出程序
a10:
********************************输入Sentence并判断
LEADX,change
MOVah,09
输出回程,换行
LEADX,mess2
输出EnterSentence:
LEADX,stoknin2
MOVah,0ah
用21号中段的0ah号功能获取句子
MOVAL,act1
CBW
MOVCX,AX
保存关键字长度到cx
PUSHCX
cx入栈
MOVAL,act2
cmpAL,0
jea50
保存句子长度到al,若句子为空则跳转显示notmatch
SUBAL,act1
jsa50
若句子长度小于关键字长度,则跳转显示notmatch
INCAL
CBW
LEABX,stokn2
将句子的首地址放进BX
MOVDI,0
MOVSI,0
a20:
****************************************比较,内循环
MOVAH,[BX+DI]
CMPAH,stokn1[SI]
遇见字符不相等就跳转到a30
jnea30
INCDI
INCSI
DECCX
没遇到一个相等的字符,cx-1,cx不为0则比较下一个字符,当cx为0是说明关键字比较完
CMPCX,0
jea40
jmpa20
a30:
*****************************************外循环,BX+1,清空si,di继续内循环比较
INCBX
DECAL
jea50
POPCX
pushCX
a40:
*****************************************match,将bx减去句子的首地址加一得到关键字所在位置,调用二进制转十六进制子函数将位置输出
SUBBX,offsetstokn2
INCBX
LEADX,change
LEADX,mess3
CALLbtoh
LEADX,mess5
jmpa10
****************************************二进制转换十六进制
btohPROCNEAR
MOVCH,4
rotate:
MOVCL,4
ROLBX,CL
MOVAL,BL
andAL,0fh
addAL,30h
cmpal,3ah
jl
printit
addal,7h
printit:
MOVdl,al
MOVah,2
decch
jnzrotate
ret
btohendp
a50:
*****************************************显示notmatch
LEADX,mess4