程序汇编实验举例及总结.docx
- 文档编号:26226203
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:16
- 大小:19.74KB
程序汇编实验举例及总结.docx
《程序汇编实验举例及总结.docx》由会员分享,可在线阅读,更多相关《程序汇编实验举例及总结.docx(16页珍藏版)》请在冰豆网上搜索。
程序汇编实验举例及总结
一、实验内容
1•在屏幕上显示一个字符的源程序:
DATASSEGMENT
STRINGS'HELLO!
;'$'
ORG100H
DATASENDS
C0DES5EGMENT
ASSUMECS:
CODES,DS:
DATAS
START
MOVAX,DATAS
MOVDS,AXLEADX,STRING
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
01
DATfiSSEGMENT
62
STRINGDB*HELLO!
'/S'
03
ORG1O0H
仙
DATASENDS
CODESSEGMENT
Q6
ASSUMECS:
CODES
.DS:
DATAS
07
START:
朋
MOUAK.DATAS
09
MOUDS,AX
10
LEADX,STRING
11
MOVAH,@9H
12
INT21H
13
MOUAH,UCH
1U
INT21H
15
16
CODESENDS
ENDSTfiUT
HDOSBox074,Cpuspeed:
HELLU!
Pre&sarajJccytocontilKic
2.编写一个程序,实现字符串的复制功能,并且将复制的字符串显示出来
DATASSEGMENT
STRING_ADB'ICHLIEBEDIC障
COUNTEQU&OFFSEETRING—A
DATASENDS
STACKSEGMENT
STRING_BDBCOUNTDUP(?
)
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKSSTART:
MOVAX,DATAS
MOVDS,AX
MOVAX,STACKS
MOVES,AX
LEASI,STRING_A
LEADI,STRING_B
MOVCX,COUNT
STD
REPMOVSB
LEADX,STRING_B
MOVAH,9
INT21H
MOVAH,4CH
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
010203的ti5加070809
10
DATASSEGMENT
string_adb1ICHLIEBEDICH・*■$countequ$-offsetstring_aDATA?
ENDS
STACKSSEGMENTstringbdbcountdup(?
)
STfiCKs"EMI>S
CODESSEGMENT
ASSUMECSzCODESxDSzDnTAS.SSzSTACKSSTART:
13
MOVAKrDATAS
仙
M(JU
15
MOUAK,STACKS
16
MOU
17
LEASI,string_a
18
LEfiDifstringlb
19
nouCX^count
20
STD
21
FICPMOUSB
12
DOSBox0.74rCpuspeec
F:
训
ICHLIEKED3CH
3、利用中断调用,在屏幕上显示1—9之间随机数。
中断号86H
DATASSEGMENT
CLADB13,10,'WEAREGOINGTOPRODUCEANUMBERATRANDOM:
$:
'
INFONDB0DH,0AH;THEPROGRAMRUNSGOOD$'DATASENDS
STACKSEGMENTSTACK
DB200DUR0)
STACKSENDS
CODES5EGMENT
ASSUMEDS:
DATAS,SS:
STACKS,CS:
CODESSTART
MOVAX,DATAS
MOVDS,AX
LEADX,CLA
MOVAH,9
INT21H
MOVAX,0
MOVES,AX
MOVBX,86H*4
CLI
MOVWORDPTRES:
[BJX]FFSE_RAN
MOVWORDPTRES:
[BX+S2]E,GRAN
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
noiT
AlTfl
U6
IHT
U7
MOU
48
KOR
49
MOV
BK.10
se
DIV
BX
51
ADD
DL,30H
52
HOU
AH,02H
53
IHT
21H
Sh
FOP
DX
55
POP
CX
56
57
IRET
58
I^DOSBox0+74rCpuspeed:
.
59
區RRE^OKHG;toFROHJCZRNUrBEHflTBailDOM
60
RANENDPI
IHEFROGHAMBUNSGDDD
61
CODESENDS
Press也瞇Ikeytoc 62 闘 ENDSTART 4.复制字符串,并倒序输出 DATASBEGMENT STRING_QB'stillhere',13,10,'$'STRING_DB'$' DATASENDS STACKSEGMENT STRING_B)B100DUR? ) STACKSNDS C0DES5EGMENT ASSUMECS: CODES,DS: DATAS,SS: STACKSSTART 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 REPMOVSBLEADX,STRING_BMOVAH,9 INT21H MOVDL,13 MOVAH,2 INT21H MOVDL,10 MOVAH,2 INT21H LEASI,STRING_BMOVCX,BXADDSI,BXDECSIS: MOVDL,[SI] MOVAH,2 INT21HDECSI LOOPSMOVAH,004CHINT21HCODESENDSENDSTART 31 NOUDL,13 32 MOUAH,2 33 INT21H 34 MOUDL,10 35 MOUAH,2 36 INT21H 37 38 LEASI,STRING_B 39 MOUCX,BX >10 ADDSItBX 41 DECSI U2 S: 43 MOUDLJSI] 44 MOUAH,2 U5 INT21H 46 DECSI 47 LOOPS 48 MOUAHvBUCH U9 INT21H 50 CODESENDS 51 ENDSTART tillhere TEllililts: DOSE: OM DOSBox074,Cpuspeec Pressdmijtccohtiime 5、显示比较两个数的大小 DATASEGMENT ADB33H BDB87H DATAENDS STACKSEGMENT DW128DUR? ) STACKENDS CODESEGMENT ASSUMECS: CODE,DS: DATA,SS: STACK STARTMOVAX,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 si DATASEGIIEHT A呃33H BDB87H DATAENDS 砧 STOCKStCHENT 06 DU128DUP(? ) 07 STACKENDS DS CODESEGNCHT 鲫 ASSUMECS: CODEtDS: >ATABSS: STACK 10 11 STftRT: tIOU 12 MOU 13 M0UALJA" 14 CHF 15 JABGA 16 MOUDLjfT 17 M0U0LfB* 18 JHFDISP 19 BGA: riOU 2n twu0Lt■A* 21 DISP: MOUAHt2 22 INT21H 23 NOUDL,>* 曲DOSBox074,Cpuspeed: 24 INI2in 25 MOUDL、BL 26 1HT21H 27 NOUAH.4CH 2B INT21H 29 CODEENDS ho ENDSTART 6、键盘输入10个学生的成绩,编写一个程序统计60-69分,70-79分,80-89分, 90-99分及100分的人数,分别存放在Score6,Score7,Score8,Score9和Score10单元中。 输入10个学生的成绩如下: 65947882839572689098 DATASSEGMENT INFON1DB13,10,'PLEASEINPUTTHOSESCORDS(YOUNEEDNOTPRESSENTERBETWEEN THEM): $' 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: STACKSSTART: 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 CALPROCPUSHAXCMPAL,36HJZG6 CMPAL,37HJZG7 CMPAL,38HJZG8 CMPAL,39HJZG9 CMPAL,31HJZG1 G6: ADD[SCORD6],1 JMPWAN G7: ADD[SCORD7],1 JMPWAN G8: ADD[SCORD8],1 JMPWAN G9: ADD[SCORD9],1JMPWAN G1: ADD[SCORD10],1 MOVAH,1 INT21H WAN: POPAX RET CALENDP CODESENDSENDSTART fl1DATASSEGMENT 02inFonldb13P1B,1Pleaseinputthosescords(youneed 03infon3db13,18/$' B4infonZ 05scordfi 06db32 07scord? db32 09scordS IBdb32 11scord9 12db32 13,10,thenumberofscordfi-sc叶(HOis: 130h db db 3Oh 3Oh 3Qh DOS DOSBox074 13 FlBd.se3H|miILtJwsH(youneedTiat㈢甘図孚SfiteTbetNBisn: 陌W7QK7260%OflS3 tliciWMbcrofwcoMl❹is: Z皐社空O scordlBdb3Oh 1Udb*$" 15DATASENDS Fressanyl«yto匸口ntLime 16 17STACKSSEGMENT isdb2OQdup(O) VQPNH弋 二、心得体会 指令助记符决定了指令的功能,对应一条二进制编码的机器指令。 指令的操作数个数由该指令确定,可以没有操作数,也可以有一个或多个操作数,大多数指令要显示写出来,还有些操作数是隐含的。 当指令包含操作数的时候,书写时必须遵守: 1、指令助记符和操作数之间有分隔符,比如几个空格;2、如果含 有多个操作数,操作数之间用逗号分隔。 现在简单总结汇编语言指令的分类: 1、数据传送指令;2、标志位操作指令;3、算术运算指令;4、逻辑运算指令;5、移位运算指令;6、位操作指令; 7、比较运算指令;8循环指令;9、转移指令;10、条件设置字节指令;11、串操作指令;12、BC阴运算调整指令;13、处理器指令。 在编写汇编程序时,应该注意特别容易出现的错误,例如在编写数据传送指令时,目的操作数和源操作数的类型一定要匹配,CS不能作为目的操作数,ofset后只能跟简单地址符号,等等。 汇编语言的寻址方式有直接寻址,寄存器寻址,基址变址寻址,相对基址变址寻址等等,掌握这些都是编写汇编程序很重要的环节。 汇编语言中的程序结构,子程序等知识也会帮助我们编写出一个更加完善的汇编程序。 另外,我们还应该掌握DOS系统功能调用,宏汇编等知识。 这里要对子程序和宏汇编加以区分,我的理解是: 子程序是调用,而宏是替换 四周的学习很短,但是也很充实,有电磁场有信号有高频,但是天天抱着电脑写的是汇编,看的书也是汇编语言,其实很幸运能有机会学一些底层的东西,老师的教学很细致认真,没有老师的督促,学习的效果肯定不尽人意。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 汇编 实验 举例 总结