实验一c121田禹125266.docx
- 文档编号:26676143
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:10
- 大小:197.60KB
实验一c121田禹125266.docx
《实验一c121田禹125266.docx》由会员分享,可在线阅读,更多相关《实验一c121田禹125266.docx(10页珍藏版)》请在冰豆网上搜索。
实验一c121田禹125266
汇编语言程序设计实验
实验一顺序与分支程序设计
一、实验目的
1)掌握顺序程序设计方法。
2)掌握分支程序的结构及分支程序的设计,调试方法。
2)学习数据传送及算术和逻辑运算指令的用法。
3)熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。
二、实验内容
6)从键盘上接收一位十进制数X,计算Y值,并以十六进制形式显示出来,Y按下列公式计算。
7)从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。
a)当输入字符为A,则计算X+Y,并以十六进制形式显示出来
b)当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来
c)当输入字符为C,则计算X*Y,并以十六进制形式显示出来
d)当输入字符为D,则计算X/Y,并以十六进制形式显示出来
三、实验设备
PC机一台
四、实验准备
1)分析题目,将程序中的原始数据和最终结果的存取方法确定好。
2)画出流程图。
3)写出源程序。
4)对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。
五、实验步骤
1)输入源程序。
2)汇编、连接程序,生成.EXE文件,执行文件,检查结果。
六、源程序
6)DATAsegment
XDB?
TABLEDWL1,L2,L3,L4
DATAends
CODESEGMENT
assumecs:
code,ds:
data
START:
MOVAX,DATA
MOVDS,AX
MOVAH,1
INT21H
CMPAL,33H
JBL
CMPAL,36H
JAL
ANDAL,0FH
MOVX,AL
SUBAL,3
SHLAL,1
MOVAH,0
LEABX,TABLE
ADDBX,AX
JMP[BX]
L1:
MOVAL,X
MULX
ADDAL,X
JMPL5
L2:
MOVAL,X
MULX
SUBAL,X
SUBAL,X
JMPL5
L3:
MOVAL,X
MULX
JMPL5
L4:
MOVAL,X
MULX
movcl,4
SHRAL,cl
L5:
MOVBL,AL
MOVCL,4
SHRAL,CL
CMPAL,9
JLEL6
ADDAL,7
l6:
ADDAL,30H
MOVDL,AL
MOVAH,2
int21H
MOVDL,BL
ANDDL,0FH
CMPdL,9
JLEL7
ADDDL,7
L7:
ADDDL,30H
MOVAH,2
INT21H
L:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验结果:
7)DATASEGMENT
XDB?
YDB?
ZDB?
WDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
XORAX,AX
MOVAH,1
INT21H
CMPAL,39H
JBEA
SUBAL,07H
A:
SUBAL,30H
MOVX,AL
MOVAH,1
INT21H
CMPAL,39H
JBEB
SUBAL,07H
B:
SUBAL,30H
MOVY,AL
MOVAH,1
INT21H
AP:
CMPAL,41H
JNEBPP
XORAL,AL
MOVAL,X
ADDAL,Y
MOVW,AL
JMPOUT_PUT
BPP:
CMPAL,42H
JNECP
XORAL,AL
MOVAL,X
SUBAL,Y
MOVW,AL
CMPAL,0
JGOUT_PUT
NEGAL
MOVW,AL
JMPOUT_PUT
CP:
CMPAL,43H
JNEDP
XORAL,AL
MOVAL,X
MULY
MOVW,AL
JMPOUT_PUT
DP:
XORAX,AX
MOVAL,X
DIVY
MOVW,AL
OUT_PUT:
MOVDL,AL
MOVCL,4
SHRDL,CL
CMPDL,9
JNPONE
ADDDL,07H
ONE:
ADDDL,30H
MOVAH,02H
INT21H
MOVDL,W
ANDDL,0FH
CMPDL,9
JNATWO
ADDDL,07H
TWO:
ADDDL,30H
MOVAH,02H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验结果:
七、实验报告的要求
1)说明程序中各部分所用的算法。
递归算法
2)说明所用到寄存器的功能。
1.数据寄存器
A.AX和AL称为累加器,是算术运算的主要寄存器。
此外,所有的I/O指令都使用AX与外部设备传送信息。
B.BX称为基址寄存器,可以作为储存器指针使用。
C.CX称为循环计数器,在循环(LOOP)和串处理指令中存放循环的次数,在移位操作中CL用于保存移位的位数。
D.DX称为数据寄存器,在作双字长运算时把DX和AX组合在一起存放一个双字长数,DX用来存放高位字。
此外,对某些I/O操作,DX可用来存放I/O端口地址。
2.段寄存器
A.CS中存放代码段的起始地址。
代码段是一段存储区域,代码段存放当前正在运行的程序。
B.DS中存放数据段的起始地址,数据段存放当前运行程序所用的数据。
如果程序中使用了串处理指令,则其源操作数也存放在数据段中。
3)总结为什么在设计分支程序时必须解决三个问题:
判断、转向和定标号分支结构可分两分支结构和多分支结构。
分支程序设计需要解决三个问题:
判断、定标号和转向。
两分支结构程序只有一个条件判断。
而多分支结构程序存在多个条件判断。
通常处理多分支结构,可以采用逻辑分解法和跳转表法
4)说明标志位CF、SF和OF的意义。
1.CF进位标志位.记录运算时从最高有效位产生的进位值。
例如,执行加法指令时,最高有效位有进位时置1,否则置0。
2.SF符号标志位。
记录运算结果的符号,结果为负时置1,否则置0。
3.OF溢出标志位。
在运算过程中,如操作数超出了机器能表示的范围则称为溢出。
此时OF位置1,否则置0。
八、实验心得:
通过本次实验,我对汇编语言程序设计的方法和特点有了一点理解,并有以下心得体会。
1.标号并不是一个独立于主程序的代码段,它只是标明了代码行指令的符号地址,如果指令中没有跳到某个标号的指令,那么这段代码是一直按顺序执行的,即使有标号存在。
2.对于要从键盘中键入字符的指令,写一次指令,只能输入一个字符,若想输入几个字符,就要用几次指令,并且要及时将输入时存入AL中的内容转移到相应的存储位置,否则,将会在原来的基础上覆盖,则只能留下最后一次输入的结果。
总之,通过这第一次的实验,我觉得对汇编语言程序设计的感觉由茫然转变为了略知一二,通过自己对题目的反复尝试,也渐渐的有了编程的感觉,以后的实验中,一定会更加认真地体会这门课程的内涵与学习方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 c121 田禹 125266