汇编实验2讲解.docx

上传人:b****3 文档编号:26831179 上传时间:2023-06-23 格式:DOCX 页数:14 大小:38.07KB
下载 相关 举报
汇编实验2讲解.docx_第1页
第1页 / 共14页
汇编实验2讲解.docx_第2页
第2页 / 共14页
汇编实验2讲解.docx_第3页
第3页 / 共14页
汇编实验2讲解.docx_第4页
第4页 / 共14页
汇编实验2讲解.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

汇编实验2讲解.docx

《汇编实验2讲解.docx》由会员分享,可在线阅读,更多相关《汇编实验2讲解.docx(14页珍藏版)》请在冰豆网上搜索。

汇编实验2讲解.docx

汇编实验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

运行结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1