河北工业大学汇编语言程序设计实验.docx

上传人:b****8 文档编号:12705296 上传时间:2023-06-07 格式:DOCX 页数:47 大小:121.81KB
下载 相关 举报
河北工业大学汇编语言程序设计实验.docx_第1页
第1页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第2页
第2页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第3页
第3页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第4页
第4页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第5页
第5页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第6页
第6页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第7页
第7页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第8页
第8页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第9页
第9页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第10页
第10页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第11页
第11页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第12页
第12页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第13页
第13页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第14页
第14页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第15页
第15页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第16页
第16页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第17页
第17页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第18页
第18页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第19页
第19页 / 共47页
河北工业大学汇编语言程序设计实验.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

河北工业大学汇编语言程序设计实验.docx

《河北工业大学汇编语言程序设计实验.docx》由会员分享,可在线阅读,更多相关《河北工业大学汇编语言程序设计实验.docx(47页珍藏版)》请在冰点文库上搜索。

河北工业大学汇编语言程序设计实验.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啦。

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

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

汇编语言程序设计实验

网络******

实验三算术运算与代码转换程序设计

一、实验目的

1)掌握算术运算程序的设计方法。

2)掌握代码转换程序的设计方法。

3)进一步掌握各种程序结构。

4)熟练掌握和使用用DEBUG调试程序。

二、实验内容

1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。

2)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。

3)编写程序把从键盘输入的以回车为结束符的字符串中的空格去掉并按相反的顺序输出。

三实验代码、

实验1

DATASEGMENT

NUM1DB22H,33H,44H,55H,66H,77H

NUM1LDB6H

NUM2DB22H,22H,22H,22H

NUM2LDB4H

OUTCOME1DB10HDUP(0)

OUTCOME2DB10HDUP(0)

NDB0H

DATAENDS

STACK1SEGMENTPARASTACK

DW20HDUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

MOVCH,0

MOVSI,OFFSETNUM1

MOVDI,OFFSETNUM2

MOVAH,NUM1L

MOVAL,NUM2L

CMPAH,AL

JAECHA

XCHGSI,DI

XCHGAH,AL

CHA:

SUBAH,AL

MOVCL,AL

CLC

MOVBX,OFFSETOUTCOME1

LOP1:

MOVAL,[DI]

PUSHCX

MOVCL,[SI]

ADCCL,AL

MOV[BX],CL

INCBX

INCSI

INCDI

POPCX

LOOPLOP1

MOVCL,AH

JCXZLOP3

LOP2:

PUSHCX

MOVCL,BYTEPTR[SI]

ADCCL,0

MOV[BX],CL

POPCX

INCBX

INCSI

LOOPLOP2

LOP3:

MOVCH,0

MOVSI,OFFSETNUM1

MOVDI,OFFSETNUM2

MOVAH,NUM1L

MOVAL,NUM2L

CMPAH,AL

JAECHA1

XCHGSI,DI

XCHGAH,AL

CHA1:

SUBAH,AL

MOVCL,AL

CLC

MOVBX,OFFSETOUTCOME2

LOP11:

MOVAL,[DI]

PUSHCX

MOVCL,[SI]

SBBCL,AL

MOV[BX],CL

INCBX

INCSI

INCDI

POPCX

LOOPLOP11

MOVCL,AH

JCXZLOP7

LOP21:

PUSHCX

MOVCL,BYTEPTR[SI]

SBBCL,0

MOV[BX],CL

POPCX

INCBX

INCSI

LOOPLOP21

LOP7:

MOVDI,OFFSETOUTCOME1

ADDDI,10H

MOVCX,11H

LOP4:

MOVDL,[DI]

DECDI

CMPN,0H

JNELOP5

CMPDL,0H

JELOP9

LOP5:

PUSHDX

PUSHCX

MOVCL,4H

SHRDL,CL

POPCX

CMPDL,9H

JBELOP6

ADDDL,7H

LOP6:

ADDDL,30H

MOVAH,2

INT21H

MOVN,1H

POPDX

ANDDX,0FH

CMPDL,9H

JBELOP8

ADDDL,7H

LOP8:

ADDDL,30H

MOVAH,2

INT21H

MOVDL,'H'

MOVAH,2

INT21H

LOP9:

LOOPLOP4

MOVN,0

MOVDI,OFFSETOUTCOME2

ADDDI,10H

MOVCX,11H

LOP14:

MOVDL,[DI]

DECDI

CMPN,0H

JNELOP15

CMPDL,0H

JELOP19

LOP15:

PUSHDX

PUSHCX

MOVCL,4H

SHRDL,CL

POPCX

CMPDL,9H

JBELOP16

ADDDL,7H

LOP16:

ADDDL,30H

MOVAH,2

INT21H

MOVN,1H

POPDX

ANDDX,0FH

CMPDL,9H

JBELOP18

ADDDL,7H

LOP18:

ADDDL,30H

MOVAH,2

INT21H

MOVDL,'H'

MOVAH,2

INT21H

LOP19:

LOOPLOP14

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验2

DATASEGMENT

TISHI1DB'Pleaseenterthefirstnumber:

','$'

TISHI2DB'Pleaseenterthesecondnumber:

','$'

JIADB'+','$'

JIANDB'-','$'

CHENGDB'*','$'

CHUDB'/','$'

DENGDB'=','$'

YUDB'......','$'

ADB10

BDW10

CDW10000

FDW0H

NUM1DW0H

NUM2DW0H

NDB0H

N1DB4H

DATAENDS

STACK1SEGMENTSTACK

DW30HDUP(0)

STACK1ENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETTISHI1

MOVAH,09H

INT21H

LOOP2:

MOVAX,NUM1

MULB

MOVBX,AX

MOVAH,1

INT21H

CMPAL,0DH

JELOP1

MOVNUM1,BX

MOVAH,0

SUBAL,30H

ADDNUM1,AX

JMPLOOP2

LOP1:

MOVDL,0AH;输出换行和回车

MOVAH,2

INT21H

MOVDL,0DH

MOVAH,2

INT21H

MOVDX,OFFSETTISHI2

MOVAH,09H

INT21H

LOOP1:

MOVAX,NUM2

MULB

MOVBX,AX

MOVAH,1

INT21H

CMPAL,0DH

JELOP3

MOVNUM2,BX

MOVAH,0

SUBAL,30H

ADDNUM2,AX

JMPLOOP1

LOP3:

MOVDL,0AH;输出换行和回车

MOVAH,2

INT21H

MOVDL,0DH

MOVAH,2

INT21H

MOVN,0

MOVDX,NUM1

MOVF,DX

LOP6:

MOVDX,0H

MOVAX,F

DIVB

PUSHDX

INCN

CMPAX,0H

JELOP7

MOVF,AX

JMPLOP6

LOP7:

MOVCL,N

MOVCH,0

LOP16:

POPDX

ADDDX,30H

MOVAH,2

INT21H

LOOPLOP16

MOVDX,NUM2

MOVF,DX

MOVN,0

MOVDX,OFFSETJIA

MOVAH,09H

INT21H

LOOOP6:

MOVDX,0H

MOVAX,F

DIVB

PUSHDX

INCN

CMPAX,0H

JELOOOP7

MOVF,AX

JMPLOOOP6

LOOOP7:

MOVCL,N

MOVCH,0

LOOOP16:

POPDX

ADDDX,30H

MOVAH,2

INT21H

LOOPLOOOP16

MOVDX,OFFSETDENG

MOVAH,09H

INT21H

MOVN,0

LOOP3:

MOVAX,NUM1

ADDAX,NUM2

MOVF,AX

LOOP4:

MOVDX,0H

MOVAX,F

DIVB

PUSHDX

INCN

CMPAX,0H

JELOOP5

MOVF,AX

JMPLOOP4

LOOP5:

MOVCL,N

MOVCH,0

LOOP0:

POPDX

ADDDX,30H

MOVAH,2

INT21H

LOOPLOOP0

MOVDL,0AH;输出换行和回车

MOVAH,2

INT21H

MOVDL,0DH

MOVAH,2

INT21H

MOVN,0

MOVDX,NUM1

MOVF,DX

LOP61:

MOVDX,0H

MOVAX,F

DIVB

PUSHDX

INCN

CMPAX,0H

JELOP71

MOVF,AX

JMPLOP61

LOP71:

MOVCL,N

MOVCH,0

LOP161:

POPDX

ADDDX,30H

MOVAH,2

INT21H

LOOPLOP161

MOVDX,NUM2

MOVF,DX

MOVN,0

MOVDX,OFFSETJIAN

MOVAH,09H

INT21H

LOOOP61:

MOVDX,0H

MOVAX,F

DIVB

PUSHDX

INCN

CMPAX,0H

JELOOOP71

MOVF,AX

JMPLOOOP61

LOOOP71:

MOVCL,N

MOVCH,0

LOOOP161:

POPDX

ADDDX,30H

MOVAH,2

INT21H

LOOPLOOOP161

MOVDX,OFFSETDENG

MOVAH,09H

INT21H

MOVN,0

MOVN,0

MOVAX,NUM1

SUBAX,NUM2

MOVF,AX

ANDAX,10000000B

CMPAX,10000000B

JNELOOP6

NEGF

LOOP6:

MOVDX,0

MOVAX,F

DIVB

PUSHDX

INCN

CMPAX,0H

JELOOP7

MOVF,AX

JMPLOOP6

LOOP7:

MOVCL,N

MOVCH,0

LOOP16:

POPDX

ADDDX,30H

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2