程序汇编实验举例及总结.docx
- 文档编号:10217743
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:13
- 大小:116.97KB
程序汇编实验举例及总结.docx
《程序汇编实验举例及总结.docx》由会员分享,可在线阅读,更多相关《程序汇编实验举例及总结.docx(13页珍藏版)》请在冰豆网上搜索。
程序汇编实验举例及总结
程序汇编实验举例及总结
LT
3、利用中断调用,在屏幕上显示1—9之间随机数。
中断号86H
DATASSEGMENT
CLADB13,10,'WEAREGOINGTOPRODUCEANUMBERATRANDOM:
$:
'
INFONDB0DH,0AH,'THEPROGRAMRUNSGOOD$'
DATASENDS
STACKSSEGMENTSTACK
DB200DUP(0)
STACKSENDS
CODESSEGMENT
ASSUMEDS:
DATAS,SS:
STACKS,CS:
CODES
START:
MOVAX,DATAS
MOVDS,AX
LEADX,CLA
MOVAH,9
INT21H
MOVAX,0
MOVES,AX;
MOVBX,86H*4
CLI
MOVWORDPTRES:
[BX],OFFSETRAN
MOVWORDPTRES:
[BX+2],SEGRAN
STI
INT86H
MOVAH,02H
INT21H
LEADX,INFON
MOVAH,9
INT21H
MOVAX,4C00H
INT21H
RANPROC
PUSHCX
PUSHDX
MOVAH,0
INT1AH
MOVAX,DX
XORDX,DX
MOVBX,10
DIVBX
ADDDL,30H
MOVAH,02H
INT21H
POPDX
POPCX
IRET
RANENDP
CODESENDS
ENDSTART
4. 复制字符串,并倒序输出
DATASSEGMENT
STRING_ADB'stillhere',13,10,'$'
STRING_LDB'$'
DATASENDS
STACKSSEGMENT
STRING_BDB100DUP(?
)
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVAX,STACKS
MOVSS,AX
LEASI,STRING_L
MOVAX,SI
LEASI,STRING_A
LEADI,STRING_B
SUBAX,SI
SUBAX,3
MOVCX,AX
MOVBX,AX
STD
REPMOVSB
LEADX,STRING_B
MOVAH,9
INT21H
MOVDL,13
MOVAH,2
INT21H
MOVDL,10
MOVAH,2
INT21H
LEASI,STRING_B
MOVCX,BX
ADDSI,BX
DECSI
S:
MOVDL,[SI]
MOVAH,2
INT21H
DECSI
LOOPS
MOVAH,004CH
INT21H
CODESENDS
ENDSTART
5、显示比较两个数的大小
DATASEGMENT
ADB33H
BDB87H
DATAENDS
STACKSEGMENT
DW128DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,'A'
CMPB,AL
JABGA
MOVDL,'A'
MOVBL,'B'
JMPDISP
BGA:
MOVDL,'B'
MOVBL,'A'
DISP:
MOVAH,2
INT21H
MOVDL,'>'
INT21H
MOVDL,BL
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
6、键盘输入10个学生的成绩,编写一个程序统计60-69分,70-79分,80-89分,90-99分及100分的人数,分别存放在Score6,Score7,Score8,Score9和Score10单元中。
输入10个学生的成绩如下:
65947882839572689098
DATASSEGMENT
INFON1DB13,10,'PLEASEINPUTTHOSESCORDS(YOUNEEDNOTPRESSENTERBETWEENTHEM):
$'
INFON3DB13,10,'$'
INFON2DB13,10,'THENUMBEROFSCORD6-SCORD10IS:
'
SCORD6DB30H
DB32
SCORD7DB30H
DB32
SCORD8DB30H
DB32
SCORD9DB30H
DB32
SCORD10DB30H
DB'$'
DATASENDS
STACKSSEGMENT
DB200DUP(0)
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVAH,9
LEADX,INFON1
INT21H
MOVAH,9
LEADX,INFON3
INT21H
MOVCX,10
S:
MOVAH,1
INT21H
CALLCAL
INT21H
MOVAH,2
MOVDL,32
INT21H
LOOPS
MOVAH,9
LEADX,INFON2
INT21H
MOVAX,4C00H
INT21H
CALPROC
PUSHAX
CMPAL,36H
JZG6
CMPAL,37H
JZG7
CMPAL,38H
JZG8
CMPAL,39H
JZG9
CMPAL,31H
JZG1
G6:
ADD[SCORD6],1
JMPWAN
G7:
ADD[SCORD7],1
JMPWAN
G8:
ADD[SCORD8],1
JMPWAN
G9:
ADD[SCORD9],1
JMPWAN
G1:
ADD[SCORD10],1
MOVAH,1
INT21H
WAN:
POPAX
RET
CALENDP
CODESENDS
ENDSTART
二、心得体会
指令助记符决定了指令的功能,对应一条二进制编码的机器指令。
指令的操作数个数由该指令确定,可以没有操作数,也可以有一个或多个操作数,大多数指令要显示写出来,还有些操作数是隐含的。
当指令包含操作数的时候,书写时必须遵守:
1、指令助记符和操作数之间有分隔符,比如几个空格;2、如果含有多个操作数,操作数之间用逗号分隔。
现在简单总结汇编语言指令的分类:
1、数据传送指令;2、标志位操作指令;3、算术运算指令;4、逻辑运算指令;5、移位运算指令;6、位操作指令;7、比较运算指令;8、循环指令;9、转移指令;10、条件设置字节指令;11、串操作指令;12、BCD码运算调整指令;13、处理器指令。
在编写汇编程序时,应该注意特别容易出现的错误,例如在编写数据传送指令时,目的操作数和源操作数的类型一定要匹配,CS不能作为目的操作数,offset后只能跟简单地址符号,等等。
汇编语言的寻址方式有直接寻址,寄存器寻址,基址变址寻址,相对基址变址寻址等等,掌握这些都是编写汇编程序很重要的环节。
汇编语言中的程序结构,子程序等知识也会帮助我们编写出一个更加完善的汇编程序。
另外,我们还应该掌握DOS系统功能调用,宏汇编等知识。
这里要对子程序和宏汇编加以区分,我的理解是:
子程序是调用,而宏是替换
四周的学习很短,但是也很充实,有电磁场有信号有高频,但是天天抱着电脑写的是汇编,看的书也是汇编语言,其实很幸运能有机会学一些底层的东西,老师的教学很细致认真,没有老师的督促,学习的效果肯定不尽人意。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 汇编 实验 举例 总结