汇编实验2.docx
- 文档编号:7380812
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:13
- 大小:37.94KB
汇编实验2.docx
《汇编实验2.docx》由会员分享,可在线阅读,更多相关《汇编实验2.docx(13页珍藏版)》请在冰豆网上搜索。
汇编实验2
实验二循环与子程序程序设计
一、实验目的
1)加深对循环结构的理解。
2)掌握循环程序的设计方法。
3)学习子程序的定义和调用方法。
4)掌握子程序、子程序的嵌套、递归子程序的结构。
5)掌握子程序设计、编制及调试。
6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
二、实验内容
1)编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。
2)将从3000H内存单元开始的100个字节存储单元全部清0。
3)编制在屏幕上显示九九乘法表的程序。
4)编制在屏幕上显示用*组成的三角形的程序。
5)设有五个字数据存放在以BUF为首地址的内存单元中,要求采用调用多个字数据相加的子程序方法编程,和的低位字放在RESULT单元,和的高位字放在RESULT+2单元,并将结果显示在屏幕上。
6)编写一个递归子程序,计算指数函数Xn的值,其中X,n从键盘输入。
三、实验设备
PC机一台
四、实验步骤
1)按程序流程图编制实验程序。
2)输入源程序。
3)汇编、连接程序,执行程序,检查结果。
4)对内存单元3000H开始的100个存储单元用E命令输入任意数。
5)程序的执行可用DEBUG的G命令,也可用T命令单步跟踪执行。
6)用D命令检查执行结果。
五、实验报告的要求
1)列出源程序。
2)对程序中用到的寄存器说明其功能。
3)总结计数控制循环程序的设计方法。
4)说明怎样使用DEBUG进行程序调试的。
调试过程中所遇到的问题是如何解决的。
实验2-1
源程序:
DATASEGMENT
BUFDB'1+2*3+3*4+4*5+...+N(N+1)=$'
DATAENDS
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,01H
MOVBX,01H
L1:
INCBX
MOVAX,BX
INCAX
MULBL;(进行乘法运算,bl作为乘数)
ADDDX,AX;(DX作为累加变量)
CMPAX,200;N(N+1)是否大于200
JBEL1
MOVBX,DX
LEADX,BUF
MOVAH,09H
INT21H;输出字符串
MOVCX,4
LOP:
MOVAX,4
MOVDX,BX
MULCL
SUBAX,4
MOVAH,AL
MOVAL,CL
MOVCL,AH;
SHRDX,CL;cl作为移位位数寄存器
ANDDX,0FH
CMPDX,0AH
JBEL2
ADDDX,7H
L2:
ADDDX,30H
MOVCL,AL;
MOVAH,02H
INT21H
LOOPLOP;输出数据
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
运行结果:
实验2-2
源程序:
stack1segmentparastack
dw20hdup(0)
stack1ends
codesegment
assumecs:
code,ss:
stack1
start:
movax,300h
movds,ax
movcx,100;cx作为循环变量
lop:
movbx,cx;bx作为地址偏移
moval,0h;al为0,目的是清零
mov-1[bx],al
looplop
movah,4ch
int21h
codeends
endstart
运行结果:
实验2-3
源程序:
datasegment
BUFDB09H,09H
dataends
stack1segmentparastack
dw20hdup(0)
stack1ends
CODESEGMENT
assumecs:
code,ds:
data,ss:
stack1,es:
data
START:
MOVAX,DATA
MOVDS,AX
ANDCX,0000H
MOVCL,09H;;cl作为循环变量
L1:
MOVBUF,CL
MOVCL,09H
L2:
MOVBUF+1,CL
MOVAL,10
SUBAL,BUF
MOVDL,AL
ORDL,30H
MOVAH,02H
INT21H
MOVDL,'*'
MOVAH,02H
INT21H
MOVBL,10
SUBBL,BUF+1
MOVDL,BL
ORDL,30H
MOVAH,02H
INT21H
MOVDL,'='
INT21H;会运行一段小程序,使AX的值改变
ANDAX,0000H
MOVAL,10
SUBAL,BUF
MOVDL,AL
MULBL
MOVBL,10
DIVBL
MOVDL,AL
MOVDH,AH
ORDL,30H
MOVAH,02H
INT21H
MOVDL,DH
ORDL,30H
MOVAH,02H
INT21H
MOVDL,''
INT21H
MOVCL,BUF+1
LOOPL2
MOVDL,0AH
INT21H
MOVCL,BUF
LOOPL1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
运行结果:
实验2-4
源程序:
datasegment
MDB20H
LSDB00H
LPDB00H
dataends
stack1segmentparastack
dw20hdup(0)
stack1ends
CODESEGMENT
assumecs:
code,ds:
data,ss:
stack1,es:
data
START:
MOVAX,DATA
MOVDS,AX
MOVAL,03H
MOVAH,00H
INT10H
MOVCX,5
L1:
MOVLP,CL
MOVBX,6H
SUBBX,CX
MOVLS,BL
MOVBH,00H
MOVDH,LS
MOVAL,M
ANDAH,00H
SUBAL,LS
MOVDL,AL
MOVAH,02H
INT10H
MOVAL,LS
ANDAH,00H
MOVBX,2
MOVAL,LS
MULBL
SUBAL,1
MOVLS,AL
MOVAH,9H
MOVAL,'*'
MOVBH,0
MOVBL,0DH
MOVCL,LS
ANDCH,00H
INT10H
MOVCL,LP
ANDCH,00H
LOOPL1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
运行结果:
实验2-5
源程序:
STACKSEGMENTSTACK
DW100HDUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK
START:
MOVAH,01H
INT21H
ANDBX,0000H
SUBAL,30H
MOVBL,AL
MOVAH,01H
INT21H
SUBAL,30H
ANDCX,0000H
MOVCL,AL
MOVAX,01H
ANDDX,0000H
CALLM
PUSHAX
MOVBX,DX
CALLSHOW
POPAX
MOVBX,AX
CALLSHOW
MOVAH,4CH
INT21H
MPROC
SUBCX,1H
JBEL
CALLM
L:
PUSHDX
MULBX
MOVCX,AX
POPAX
PUSHDX
MULBX
POPDX
ADDDX,AX
MOVAX,CX
RET
MENDP
SHOWPROC
MOVCX,4
L2:
PUSHCX
MOVCL,4
ROLBX,CL
MOVDL,BL
ANDDL,0FH
CMPDL,0AH
JBL3
ADDDL,07H
L3:
ADDDL,30H
MOVAH,02H
INT21H
POPCX
LOOPL2
RET
SHOWENDP
CODEENDS
ENDSTART
运行结果:
实验2-6
源程序:
STACKSEGMENTSTACK
DW100HDUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK
START:
MOVAH,01H
INT21H
ANDBX,0000H
SUBAL,30H
MOVBL,AL
MOVAH,01H
INT21H
SUBAL,30H
ANDCX,0000H
MOVCL,AL
MOVAX,01H
ANDDX,0000H
CALLM
PUSHAX
MOVBX,DX
CALLSHOW
POPAX
MOVBX,AX
CALLSHOW
MOVAH,4CH
INT21H
MPROC
SUBCX,1H
JBEL
CALLM
L:
PUSHDX
MULBX
MOVCX,AX
POPAX
PUSHDX
MULBX
POPDX
ADDDX,AX
MOVAX,CX
RET
MENDP
SHOWPROC
MOVCX,4
L2:
PUSHCX
MOVCL,4
ROLBX,CL
MOVDL,BL
ANDDL,0FH
CMPDL,0AH
JBL3
ADDDL,07H
L3:
ADDDL,30H
MOVAH,02H
INT21H
POPCX
LOOPL2
RET
SHOWENDP
CODEENDS
ENDSTART
运行结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 实验