汇编语言程序设计实验教程第二章实验报告.docx
- 文档编号:7739011
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:7
- 大小:17.19KB
汇编语言程序设计实验教程第二章实验报告.docx
《汇编语言程序设计实验教程第二章实验报告.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计实验教程第二章实验报告.docx(7页珍藏版)》请在冰豆网上搜索。
汇编语言程序设计实验教程第二章实验报告
汇编语言程序设计实验教程第二章实验报告
实验2.1
用表格形式显示字符
1.题目:
用表格形式显示ASCII字符SMASCII
2.实验要求:
按15行*16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。
每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。
3.提示:
(1)显示每个字符可使用功能号为02的显示输出功能调用,使用方法如下:
mov ah,02h
mov dl,输出字符的ASCII码
int 21h
(2)显示空白符时,用其ASCII码0置入dl寄存器。
每行结束时,用显示回车(ASCII为0dh)和换行符(ASCII为0ah)来结束本行并开始下一行。
(3)由于逐个显示相继的ASCII字符时,需要保存并不断修改dl寄存器的内容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相继的ASCII字符。
具体做法是:
在显示空白或回车、换行符前用指令
push dx
把dl的内容保存到堆栈中去。
在显示空白或回车、换行符后用指令
pop dx
恢复dl寄存器的原始内容。
4.程序清单:
codesegment
assumecs:
code
start:
movdx,0010h
next:
movcx,10h
loop1:
movah,02h
int21h
incdx
pushdx
movdl,0
int21h
popdx
looploop1
pushdx
movdl,0ah
int21h
movdl,0dh
int21h
popdx
cmpdx,100h
jbnext
movah,4ch
int21h
codeends
endstart
5.运行结果如下:
6.实验总结:
通过本次实验我深刻的知道用汇编语言编译程序的方法,掌握了如何合理的利用各个寄存器进行程序的控制操作,初步了解到循环程序的控制方法,以及dos中断调用的基本要领对学习汇编语言有了非常好的帮助作用!
汇编语言 实验二 查找匹配字符串
一、目的
查找匹配字符串SEARCH
二、实验内容
程序接收用户键入的一个关键字以及一个句子。
如果句子中不包含关键字则显示‘NOmatch!
’;如果句子中包含关键字则显示‘MATCH’,且把该字在句子中的位置用十六进制数显示出来。
流程图
不匹配,输出
开始
三、设计和编码
DATASEGMENT
mess1 DB'Enterkeyword:
','$'
mess2 DB'EnterSentence:
','$'
mess3 DB'Matchatlocation:
','$'
mess4 DB'NOTMATCH.',13,10,'$'
mess5 DB'Hifthesentence',13,10,'$'
change DB13,10,'$'
stoknin1labelbyte
max1db10
act1db?
stokn1db10dup(?
)
stoknin2labelbyte
max2db50
act2db?
stokn2db50dup(?
)
DATAENDS
STACKSSEGMENT
;此处输入堆栈段代码
STACKSENDS
CODESEGMENT
;*************************************代码段
mainprocfar
assumecs:
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
INT21h ;输出回程,换行
LEADX,mess2
MOVah,09
INT21h ;输出EnterSentence:
LEADX,stoknin2
MOVah,0ah
INT21h ;用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
cmpAL,0
jea50
MOVDI,0
MOVSI,0
POPCX
pushCX
jmpa20
a40:
;*****************************************match,将bx减去句子的首地址加一得到关键字所在位置,调用二进制转十六进制子函数将位置输出
SUBBX,offsetstokn2
INCBX
LEADX,change
MOVah,09
INT21h
LEADX,mess3
MOVah,09
INT21h
CALLbtoh
LEADX,mess5
MOVah,09
INT21h
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
int21h
decch
jnzrotate
ret
btohendp
a50:
;*****************************************显示notmatch
LEADX,change
MOVah,09
INT21h
LEADX,mess4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 实验 教程 第二 报告