汇编实验汇总.docx
- 文档编号:8565290
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:14
- 大小:69.11KB
汇编实验汇总.docx
《汇编实验汇总.docx》由会员分享,可在线阅读,更多相关《汇编实验汇总.docx(14页珍藏版)》请在冰豆网上搜索。
汇编实验汇总
汇编语言第一次实验
实验目的
1)了解汇编语言程序的基本结构
3)掌握汇编语言程序编写、编译、链接、运行的基本步骤和命令
3)自学并掌握运用DEBUG命令进行程序调试的基本命令
实验题目
1.选用某编辑器(MASM或QASM),输入Helloworld.asm程序(照着实验要求及辅导的图敲,简单理解即可,后面会详细讲)
2.使用masm与link命令汇编并运行程序
3.使用ml命令汇编并运行程序
4.自学”Debug调试程序”,了解其基本选项的应用
5.查看“HelloWorld”字符串所在的内存地址,使用debug工具将“W”改为“w”
6.掌握选项的使用:
AUDEGHPTQR不解释
汇编语言第二次实验
实验目的
2)熟练掌握汇编语言程序的书写、汇编、连接等步骤
2)掌握基本的debug命令,并对程序进行基本的调试
实验题目
1.将给定程序输入,并汇编、连接后生成可执行文件lab2.exe
2.Debuglab2.exe
3.尝试(运用debug):
1)将内存中字符串“helloworld”改写成“HELLOWORLD”,并显示修改后的结果e指令
2)展示3F24+4A2B和3F24-4A2B的计算h指令
3)在内存中输入MOVAX,50a指令
ADDAX,AX
执行并查看AX的变化,修改AX的值为FFFFr指令
;用于前两次实验的helloworld代码
.MODELSMALL
.STACK
.CODE
STRDB0DH,0AH,'HELLOWORLD!
',0DH,0AH,'$'
.STARTUP
LEADX,STR
MOVAH,09H
INT21H
.EXIT0
.END
汇编语言第三次实验
实验目的
熟练使用Debug,理解数据在内存中的存放,并理解并练习各种寻址方式。
实验题目
1)在数据段中依次存入10,11,12,13,14,15,16,17,将其相加,并将结果存入DX寄存器。
2)联系使用debug命令破解bios密码,写出自己对破解密码的理解。
汇编语言第四次实验
实验目的
简单程序指令的应用
传送指令比较指令条件转移指令字符显示
简单程序结构的学习
能应用Debug工具调试程序
实验题目
在长度为8的字节数组(无符号数)中,查找大于42H的无符号数的个数,存放在字节单元up中;等于42H的无符号数的个数,存放在字节单元equa中;小于42H的无符号数的个数,存放在字节单元down中。
程序显示upequadown的值。
八个数:
31H,21H,42H,52H,87H,23H,98H,01H
参考程序:
DATASEGMENT
DATA1DB31H,21H,42H,52H,87H,23H,98H,01H
COUNTDB8H
SEARCHDB42H
UPDB0
DOWNDB0
EQUADB0
UPSTRINGDB0AH,0DH,'UPNumber:
$'
DOWNSTRINGDB0AH,0DH,'DownNumber:
$'
EQUASTRINGDB0AH,0DH,'EqauNumber:
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,0
AGAIN:
MOVAL,[DATA1+BX]
MOVDL,SEARCH
CMPAL,DL
JZEQUAL
JNSLARGER
JSSMALLER
EQUAL:
INCEQUA
INCBX
CMPBX,8
JNZAGAIN
JZNEXT
LARGER:
INCUP
INCBX
CMPBX,8
JNZAGAIN
JZNEXT
SMALLER:
INCDOWN
INCBX
CMPBX,8
JNZAGAIN
JZNEXT
NEXT:
MOVDX,OFFSETUPSTRING
MOVAH,09H
INT21H
ADDUP,30H
MOVDL,UP
MOVAH,2
INT21H
MOVDX,OFFSETDOWNSTRING
MOVAH,09H
INT21H
ADDDOWN,30H
MOVDL,DOWN
MOVAH,2
INT21H
MOVDX,OFFSETEQUASTRING
MOVAH,09H
INT21H
ADDEQUA,30H
MOVDL,EQUA
MOVAH,2
INT21H
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
程序解释:
1UPSTRINGDB0AH,0DH,'UPNumber:
$'
oah,0dh为回车和换行符
$为字符串的结束标志,在调用中断显示字符串时是这样要求的。
2MOVAX,DATA
MOVDS,AX
为什么不用MOVDS,DATA因为不能直接给段寄存器那样赋值
3CMPAL,DL
比较两个数,并设置相应的条件标志位,后面往往跟跳转语句
4JZEQUAL
JNSLARGER
JSSMALLER
Z-Zero零ns-notsign正s-sign负
5NCBX
bx=bx+1
6JNZAGAIN
NZ-notzero不相等
7MOVDX,OFFSETUPSTRING;相当于leadx,string也相当于设置dl
MOVAH,09H
INT21H
显示字符串
8ADDUP,30H
数值变成ASC码,以便显示
9MOVAX,4C00H
退出程序
汇编语言第五次实验
实验目的
汇编指令综合应用
用表格形式显示字符
实验题目
1、按15行×16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序将ASCII码递增的顺序依次显示对应的字符。
2、每16个字符为一行,字符之间以空白符隔开。
代码参考:
DATASEGMENT
DATA1DB10H
COUNTINLINEDB10H
UPSTRINGDB0AH,0DH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBL,0
MOVBH,10H
MOVCL,8FH
ADDCL,70H
LINELOOP:
MOVAL,BH
MOVDL,AL
MOVAH,2H
INT21H
MOVDL,''
MOVAH,2H
INT21H
CMPBH,CL
JZENDPRO
INCBH
INCBL
CMPBL,10H
JZCHANGELINE
JMPLINELOOP
CHANGELINE:
MOVBL,0H
MOVDX,OFFSETUPSTRING
MOVAH,09H
INT21H
JMPLINELOOP
ENDPRO:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
汇编语言第六次实验
实验目的
汇编指令综合应用
DOS系统功能调用(也可以是其它形式)
串操作指令的熟练运用
实验题目
从键盘输入两个字符串:
A串,例如’software’;B串,例如’schoolofsoftwareengineering’;
判断A在B中是否存在,如果存在,输出“FOUND”,反之,输出“NOTFOUND”;
(确定一个B串中多处存在A串的例子),用一个C串去替换A串(A与C长度不一样,取代所有相同的串),替换后的结果在显示器上显示。
参考代码:
DATASEGMENT
BUFFERADB81
DB0
DB81DUP(0)
BUFFERBDB81
DB0
DB81DUP(0)
PROMPTSTRINGADB'inputAstring:
',0AH,0DH,'$'
PROMPTSTRINGBDB'inputBstring:
',0AH,0DH,'$'
FOUNDSTRINGDB'FOUNDIT',0AH,0DH,'$'
NOTFOUNDSTRINGDB'NOTFOUNDIT',0AH,0DH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
;inputABstring
MOVDX,OFFSETPROMPTSTRINGA
MOVAH,09H
INT21H
MOVDX,SEGBUFFERA
MOVDS,DX
MOVDX,OFFSETBUFFERA
MOVAH,0AH
INT21H
MOVDX,OFFSETPROMPTSTRINGB
MOVAH,09H
INT21H
MOVDX,SEGBUFFERB
MOVES,DX
MOVDX,OFFSETBUFFERB
MOVAH,0AH
INT21H
;lookforifAinB
MOVSI,OFFSETBUFFERA
MOVDI,OFFSETBUFFERB
ADDSI,02H
ADDDI,01H
PUSHSI
PUSHDI
MOVBX,ES:
[DI]
MOVBH,00H
MOVCX,DS:
[SI-01H]
MOVCH,00H
PUSHCX
AGAIN:
POPCX
POPDI
INCDI
POPSI
PUSHSI
PUSHDI
PUSHCX
REPZCMPSB
CMPCX,0
JZFOUND
SUBBL,01H
JZNOTFOUND
JMPAGAIN
FOUND:
MOVDX,OFFSETFOUNDSTRING
MOVAH,09H
INT21H
JMPENDPRO
NOTFOUND:
MOVDX,OFFSETNOTFOUNDSTRING
MOVAH,09H
INT21H
ENDPRO:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
汇编语言第七次实验
实验目的
学习使用简化段定义格式进行汇编语言程序设计
练习相关伪指令
熟练进行程序流程操作
实验题目
从键盘输入一个字符串:
对其中的所有字母进行排序,将结果输出;
如,输入:
gaoxing输出:
agginox(二班选做,将所有小写字母转换成大写字母)
参考代码:
;输入字符串,排序输出,可以考虑已讲的各种程序设计技巧。
.MODELSMALL
.STACK
.DATA
SOURCENUMBERSDB64
DB0
ARRAYEQUTHISBYTE
DB64DUP('$')
DESTNUMBERSDB64
DB0
DB64DUP('$')
COUNTDW0
PROMPTSTRINGADB0AH,0DH,'inputstring:
',0AH,0DH,'$'
PROMPTSTRINGBDB0AH,0DH,'outputstring:
',0AH,0DH,'$'
.CODE
.startup
MOVDX,OFFSETPROMPTSTRINGA
MOVAH,09H
INT21H
;读入数字,以数组的形式
MOVDX,OFFSETSOURCENUMBERS
MOVAH,0AH
INT21H
MOVAL,[SOURCENUMBERS+1]
MOVAH,0H
MOV[COUNT],AX
;输出提示
MOVDX,OFFSETPROMPTSTRINGB
MOVAH,09H
INT21H
MOVCX,COUNT;CX←数组元素个数
DECCX;元素个数减1为外循环次数
OUTLP:
MOVDX,CX;DX←内循环次数
MOVBX,OFFSETARRAY
INLP:
MOVAL,[BX];取前一个元素
CMPAL,[BX+1];与后一个元素比较
JNANEXT
;前一个不大于后一个元素,则不进行交换
XCHGAL,[BX+1];否则,进行交换
MOV[BX],AL
NEXT:
INCBX;下一对元素
DECDX
JNZINLP;内循环尾
LOOPOUTLP;外循环尾
OUPUTING:
MOVDX,OFFSETARRAY
MOVAH,09H
INT21H
.EXIT0
END
汇编语言第八次实验
这次就自己动手吧
下面是一个调用子程序输出helloworld的小程序,仅作参考。
.MODELSMALL
.STACK
.DATA
STRDB0DH,0AH,'HelloWorld!
',0DH,0AH,'$'
.CODE
.STARTUP
CALLOUTPUT
MOVAH,4CH
INT21H
OUTPUT:
LEADX,STR
MOVAH,9H
INT21H
RET
.EXIT0
.END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 实验 汇总