汇编语言程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
(一)
1、实验目的
1. 掌握顺序程序设计方法
2. 掌握分支程序的结构及分支程序的设计,调试方法
3. 学习数据传送及算术和逻辑运算指令的用法
4. 熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程
2、实验内容
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、实验结果
1、结果截图
2、结果截图
4、源代码
1、代码
DATA SEGMENT
X DB ?
TABLE DW L1,L2,L3,L4
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AH,1
INT 21H
CMP AL,33H
JB L0
CMP AL,36H
JA L0
AND AL,0FH
MOV X,AL
SUB AL,3
SHL AL,1
XOR AH,AH
MOV BX,OFFSET TABLE
ADD BX,AX
JMP [BX]
L1:MOV AL,X
MUL AL
ADD AL,X
JMP L7
L2:MOV AL,X
MUL AL
SUB AL,X
SUB AL,X
JMP L7
L3:MOV AL,X
MUL AL
JMP L7
L4:MOV AL,X
MUL AL
MOV CL,2
DIV CL
JMP L7
L7:MOV BL,AL
MOV CL,4
SHR AL,CL
CMP AL,9
JLE L5
ADD AL,7
L5:ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
AND BL,0FH
CMP BL,9
JLE L6
ADD BL,7
L6:ADD BL,30H
MOV DL,BL
MOV AH,2
INT 21H
L0:MOV AH,4CH
INT 21H
CODE ENDS
END START
2、代码
DATA SEGMENT
X DB ?
Y DB ?
Z DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
XOR AX,AX
MOV AH,1
INT 21H
MOV X,AL
MOV AH,1
INT 21H
MOV Y,AL
MOV AH,1
INT 21H
MOV Z,AL
MOV AL,X
MOV BL,Y
MOV AH,Z
CMP AL,39H
JBE M1
SUB AL,7
M1:SUB AL,30H
MOV X,AL
CMP BL,39H
JBE M2
SUB BL,7
M2:SUB BL,30H
MOV Y,BL
MOV AL,X
MOV BL,Y
CMP AH,41H
JE L1
CMP AH,42H
JE L4
CMP AH,43H
JE L6
CMP AH,44H
JE L7
L1:ADD AL,BL
JMP L5
L4:CMP AL,BL
JA L8
SUB BL,AL
MOV AL,BL
JMP L5
L8:SUB AL,BL
JMP L5
L6:MOV AL,X
MUL BL
JMP L5
L7:XOR AX,AX
MOV AL,X
DIV BL
L5:MOV BH,AL
MOV CL,4
SHR AL,CL
CMP AL,9
JLE L2
ADD AL,7
L2:ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
AND BH,0FH
CMP BH,9
JLE L3
ADD BH,7
L3:ADD BH,30H
MOV DL,BH
MOV AH,2
INT 21H
L0:MOV AH,4CH
INT 21H
CODE ENDS
END START
五、实验心得
通过本次实验,我对汇编语言程序设计的方法和特点有了一点理解,并有以下心得体会。
1. 标号并不是一个独立于主程序的代码段,它只是标明了代码行指令的符号地址,如果指令中没有跳到某个标号的指令,那么这段代码是一直按顺序执行的,即使有标号存在。
2. 对于要从键盘中键入字符的指令,写一次指令,只能输入一个字符,若想输入几个字符,就要用几次指令,并且要及时将输入时存入AL中的内容转移到相应的存储位置,否则,将会在原来的基础上覆盖,则只能留下最后一次输入的结果。
3. 程序中的数据均为十六进制,运算也为十六进制数的运算,但是输入一个字符,是将它对应的的ASCII码值存放在相应的位置,输出的时候,也是将相应的ASCII码对应的字符输出,因此,比如当运算结果为0AH时,必须在0AH的基础上+37H,转化成'A'字符对应的ASCII码值,再输出,才能显示为A,这才是对应的十六进制数。例如,输入一个十进制数5,则存入的是35H,只有将35H减去30H,转化成05H,才能继续用它进行运算。
4. 设计程序时,可以先将一种情况的程序设计出来,如x=3时的,然后经调试成功之后,再将x=4,5,6时的情况补上,这样程序设计更清晰,更易于理解设计过程。
5. 注意:补写程序时要在结束语句之前补写,否则补写的部分无法执行。补写时,要充分考虑到程序执行的顺序,注意体会标号的含义,必要时使用JMP+标号,跳脱不必要执行的代码段,避免程序出错。
6. 在程序设计中,经常使用一些巧妙的运算来达到所需的目的。如将AH与AH异或,可以将AH置零。
总之,通过这第一次的实验,我觉得对汇编语言程序设计的感觉由茫然转变为了略知一二,通过自己对题目的反复尝试,也渐渐的有了编程的感觉,以后的实验中,一定会更加认真地体会这门课程的内涵与学习方法。