语言程序设计顺序与分支程序设计.docx

上传人:b****2 文档编号:2034343 上传时间:2022-10-26 格式:DOCX 页数:41 大小:121.71KB
下载 相关 举报
语言程序设计顺序与分支程序设计.docx_第1页
第1页 / 共41页
语言程序设计顺序与分支程序设计.docx_第2页
第2页 / 共41页
语言程序设计顺序与分支程序设计.docx_第3页
第3页 / 共41页
语言程序设计顺序与分支程序设计.docx_第4页
第4页 / 共41页
语言程序设计顺序与分支程序设计.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

语言程序设计顺序与分支程序设计.docx

《语言程序设计顺序与分支程序设计.docx》由会员分享,可在线阅读,更多相关《语言程序设计顺序与分支程序设计.docx(41页珍藏版)》请在冰豆网上搜索。

语言程序设计顺序与分支程序设计.docx

语言程序设计顺序与分支程序设计

汇编语言程序设计实验

网络******

实验一顺序与分支程序设计

一、实验目的

1)掌握顺序程序设计方法。

2)掌握分支程序的结构及分支程序的设计,调试方法。

2)学习数据传送及算术和逻辑运算指令的用法。

3)熟悉在pc机上建立、汇编、连接、调试和运行汇编语言程序的过程。

二、实验内容

1.实验六

从键盘上接收一位十进制数x,计算y值,并以十六进制形式显示出来,y按下列公式计算。

2..实验七

实验内容:

从键盘上接收两个一位十六进制数x和y,然后再输入一个a-d之间的一个字符,按下列要求计算。

a)当输入字符为a,则计算x+y,并以十六进制形式显示出来

b)当输入字符为b,则计算|x-y|,并以十六进制形式显示出来

c)当输入字符为c,则计算x*y,并以十六进制形式显示出来

d)当输入字符为d,则计算x/y,并以十六进制形式显示出来

3、实验代码

实验六

DATESEGMENT

XDB?

DATEENDS;数据段

CODESEGMENT

ASSUMECS:

CODE,DS:

DATE

START:

MOVAX,DATE;代码段

MOVDS,AX;初始化ds寄存器

MOVAH,1

INT21H;读文件到缓冲区

CMPAL,33H;比较指令

JBL0;A

CMPAL,36H

JAL0

ANDAL,0FH;逻辑与指令

MOVX,AL;al给x

MOVAL,X

CMPAL,3H

JEL1;执行L1命令

CMPAL,4H

JEL4;执行L4命令

CMPAL,5H

JEL6;执行L6命令

CMPAL,6H

JEL7;执行L7命令

L1:

MULAL

ADDAL,X;al+x

L5:

MOVBL,AL

MOVCL,4

SHRAL,CL;移位指令

CMPAL,9

JLEL2;转移指令。

小于或等于,或者不大于则转移

ADDAL,7

L2:

ADDAL,30H;寄存器al加0x30

MOVDL,AL

MOVAH,2;把2放入ah里

INT21H

ANDBL,0FH;逻辑与运算指令

CMPBL,9

JLEL3

ADDBL,7;相加

L3:

ADDBL,30H

MOVDL,BL

MOVAH,2

INT21H

JMPL0

L4:

MULAL

SUBAL,X

SUBAL,X

JMPL5

L6:

MULAL

JMPL5

L7:

MULAL

SHRAL,1

JMPL5

L0:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验七

DATASEGMENT

XDB0

YDB0

WDB0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

XORAX,AX

MOVAH,1

INT21H

CMPAL,39H

JBEL1

SUBAL,07H

L1:

SUBAL,30H

MOVX,AL

MOVAH,1

INT21H

CMPAL,39H

JBEL2

SUBAL,07H

L2:

SUBAL,30H

MOVY,AL

MOVAH,1

INT21H

A:

CMPAL,41H

JNEB

XORAL,AL

MOVAL,X

ADDAL,Y

MOVW,AL

JMPL3

B:

CMPAL,42H

JNEC

XORAL,AL

MOVAL,X

SUBAL,Y

MOVW,AL

CMPAL,0

JGL3

NEGAL

MOVW,AL

JMPL3

C:

CMPAL,43H

JNED

XORAL,AL

MOVAL,X

MULY

MOVW,AL

JMPL3

D:

XORAX,AX

MOVAL,X

DIVY

MOVW,AL

L3:

MOVDL,AL

MOVCL,4

SHRDL,CL

CMPDL,9

JNAL4

ADDDL,07H

L4:

ADDDL,30H

MOVAH,02H

INT21H

MOVDL,W

ANDDL,0FH

CMPDL,9

JNAL5

ADDDL,07H

L5:

ADDDL,30H

MOVAH,02H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4、实验结果:

实验六结果

实验七结果

5、实验心得:

(1)通过实验使我知道了和熟悉了汇编程序设计的步骤

1.建立数学模型遇到一个题目,首先要进行全面的分析,根据问题提出的条件,特点,找出规律,找出问题的数学模型或者制定解决问题的规律。

2.绘制程序流程图流程图能够把比较抽象的问题变得而形象化,并且有助于理清楚思路,便于程序的编制,在程序的易读性和易维护性上有很大的帮助。

3.合理分配存储空间和寄存器汇编语言能够直接的调用存储器和寄存器。

程序运行时,大两量的数据,中间结果或最后的结果都存放在存储器中,且运行的程序目标代码在存储器中,节约空间是一个好的程序应该注意的问题。

4.编制程序根据语法指令编制程序

5.人工检查用人工的方式检查程序是否有错,并及时的改正。

6.上机调试只有通过上机才能验证程序是否正确,经过反复的运行调试,才能得到正确的程序。

(2)掌握了分支程序的结构及分支程序的设计,调试方法和数据传送及算术和逻辑运算指令的用法。

汇编语言程序设计实验

网络******

实验二循环与子程序程序设计

一、实验目的

1)加深对循环结构的理解。

2)掌握循环程序的设计方法。

3)学习子程序的定义和调用方法。

4)掌握子程序、子程序的嵌套、递归子程序的结构。

5)掌握子程序设计、编制及调试。

6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、实验内容

1)编制在屏幕上显示九九乘法表的程序。

2)编制在屏幕上显示用*组成的三角形的程序。

3、实验代码

实验一

DATASEGMENT

S2DB?

S1DB?

XDB1

YDB1

SDB0AH

FCH=2AH

FDH=3DH

FKG=20H

FHH=0AH

FHC=0DH

DATAENDS

STACK1SEGMENTSTACK

DB20HDUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

MOVCL,9

LL1:

PUSHCX;将CL压入堆栈段

MOVCL,Y

LL2:

CALLL1;调用子程序L1

INCX

LOOPLL2

MOVX,1

INCY

MOVDL,FHH;输出换行和回车

MOVAH,2

INT21H

MOVDL,FHC

MOVAH,2

INT21H

POPCX;从堆栈段中取出CL

LOOPLL1

MOVAH,4CH;程序结束

INT21H

L1PROC;计算X*Y=Z并且输出X*Y=Z的子程序

MOVDL,X

ADDDL,30H

MOVAH,2

INT21H

MOVDL,FCH

MOVAH,2

INT21H

MOVDL,Y

ADDDL,30H

MOVAH,2

INT21H

MOVDL,FDH

MOVAH,2

INT21H

MOVAL,X

MULY

DIVS

MOVS1,AH

ADDAL,30H

MOVDL,AL

MOVAH,2

INT21H

ADDS1,30H

MOVDL,S1

MOVAH,2

INT21H

MOVDL,FKG;输出空格

MOVAH,2

INT21H

RET

L1ENDP;子程序结束

CODEENDS

ENDSTART

实验二

DATASEGMENT

NDB?

FCH=2AH

FDH=3DH

FKG=20H

FHH=0AH

FHC=0DH

DATAENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAH,1;输入一位16进制数确定输出行数INT21HCMPAL,39HJBEL1SUBAL,07H

L1:

SUBAL,30HMOVN,AL

XORBX,BX

MOVDL,FCH

MOVCL,N

MOVDL,FHH;输出换行和回车

MOVAH,2

INT21H

MOVDL,FHC

MOVAH,2

INT21H

LOP:

PUSHCX

INCBL

MOVCL,BL

MOVDL,FCH

LOP2:

MOVAH,02H

INT21H

LOOPLOP2

POPCX

MOVDL,0AH

MOVAH,02H

INT21H

MOVDL,FHC

MOVAH,02H

INT21H

CMPBL,9

JZL2

LOOPLOP

L2:

MOVAH,4CH;程序结束

INT21H

CODESENDS

ENDSTART

4、实验结果:

 

实验一结果

实验二结果

5、实验心得

6、循环程序由初始化部分、循环部分、调整部分、控制部分组成

1〉两种方式,一种是先判断在执行,另一种是先执行再判断。

2〉两种控制循环的方式

a〉计数控制循环

一般使用LOOP指令,要先将循环的次数放入CX中,在多重循环的计数控制中要注保存和复原上一次循环的断点信息,在保留和复原时可以使用堆栈进行处理。

自认为可以理解为一根盘绕了确定的圈数的绳子,又进入的头,又出去的尾。

b〉条件控制循环

一般使用JMP指令使程序跳到这一段的开头,用CMP在循环中进行比较判断,再根据程序要求,选择适当的转移条件,跳出循环。

自认为可以理解为一圆形的导轨,并在导轨上设置一个初口,在符合条件时就在导轨上脱离,否则,将会在导轨上一直的转下去。

3〉再循环中可以同时使用两者,当即已知循环的次数限制范围,但又要求在符合条件时结束循环是,就要同时使用两者。

7、子程序的使用大大的简化了程序设计的思路,在完成一个程序时,可以简单的把一个程序划分为几个完整的几部分,使每一部分独立的完成特定的一部分和计算任务。

子程序的使用还可以大大的减小程序的体积,在一程序中,如果需要多次反复的是用某一段代码的话,就可以将这段代码设定为子程序,以后想使用时,只要一CALL再一RET就OK啦。

我认为使用子程序的关键在于明白子程序的机理,明白子程序是如何保存和恢复断点的信息的,只有真正的理解了这一点才能更好地利用好子程序。

子程序的参数传递的方式有很多种,但是在堆栈段传递参数时,应该注意使用带立即数的返回的方式,在利用寄存器

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

当前位置:首页 > 高中教育 > 初中教育

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

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