汇编实验1Word文件下载.docx
《汇编实验1Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编实验1Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
三、实验设备
PC机一台
四、实验准备
1)分析题目,将程序中的原始数据和最终结果的存取方法确定好。
2)画出流程图。
3)写出源程序。
4)对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。
五、实验步骤
1)输入源程序。
2)汇编、连接程序,生成.EXE文件,执行文件,检查结果。
六、实验报告的要求
1)列出源程序,说明程序的基本结构,包括程序中各部分的功能。
2)说明程序中各部分所用的算法。
3)说明主要符号和所用到寄存器的功能。
4)总结为什么在设计分支程序时必须解决三个问题:
判断、转向和定标号。
5)说明标志位CF、SF和OF的意义。
6)上机调试过程中遇到的问题是如何解决的。
7)对调试源程序的结果进行分析。
实验1-1
源程序:
DATASEGMENT
BUF1DW932AH;
(以十六进制表示一个数的原码,包括符号位)
BUF2DW?
BUF3DW?
DATAENDS
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,BUF1
MOVBX,AX
ANDAX,0FFFFH
JNSL;
sf表示符号标志位,若最高位大于7时,则为负,该命令判断是否为负,为负则求反(加一),为正则原样输出
NEGAX
XORBX,0FFFFH
ORAX,8000H;
保持符号位不变
ORBX,8000H
L:
MOVBUF2,BX
MOVBUF3,AX
PUSHAX
PUSHBX
MOVCX,2
LOP:
POPBX;
将结果每一位通过循环移位显示在屏幕上
PUSHCX
MOVCX,4
LP:
PUSHCX
MOVCL,4
ROLBX,CL
MOVDL,BL
ANDDL,0FH
CMPDL,0AH
JBL2
ADDDL,07H
L2:
ADDDL,30H
MOVAH,02H
INT21H
POPCX
LOOPLP
MOVDL,'
'
LOOPLOP
MOVAH,4CH
CODEENDS
ENDSTART
运行结果:
屏幕上显示的是BUF1数的反码和补码(十六进制,包括符号位)。
调试时发现结果显示成乱码,经过研究程序代码发现如果数字在A到F之间,则需要将内存数值加37。
实验1-2
datasegment
Adw00ED1h
Bdw0BDE9h
dataends
stack1segmentparastack
dw20hdup(0)
stack1ends
codesegment
assumecs:
code,ds:
data,ss:
stack1,es:
data
start:
MOVBX,A;
(把A存储的单元放入BX寄存器中)
MOVAX,B;
(把B存储的单元放入AX寄存器中)
ADDBX,AX
JCL0;
cf是无符号的进位,当两数相加大于0ffffh,产生进位
MOVA,BX
L0:
MOVDX,BX;
显示相加结果
ANDDX,0F000H
MOVCL,12
SHRDX,CL
CMPDX,0AH
JBL1
ADDDX,7H
L1:
ADDDX,30H
MOVDX,BX
ANDDX,0F00H
MOVCL,8
ANDDX,0F0H
JBL3
L3:
ANDDX,0FH
JBL4
L4:
movah,4ch
int21h
codeends
endstart
实验1-3
源代码:
BUFDB03EH,060H,93H
MAXDB00H
ANDAX,0000H
MOVAL,BUF
MOVMAX,AL
MOVBL,BUF+1
CMPMAX,BL;
找到最大的数
JAEL1
MOVMAX,BL
MOVBL,BUF+2
CMPMAX,BL
JAEL2;
显示最大的数
ANDDX,0000H
MOVDL,MAX
ANDDL,0F0H
SHRDL,CL
ADDDL,7H
实验1-4
BUFDB-34H,3AH,-43H;
转换成补码
MOVAL,BUF;
通过对所有的数取阶码比较大小
ADDAL,80H
ADDBL,80H
JAEL2
SUBDL,80H;
包含有cmp功能,对最大的数减去80h(取回原码)
JAEL3
MOVBL,DL
-'
;
如果是负数显示符号
NEGDL;
求补(针对带符号数)
MOVBL,DL;
ADDDL,30H
实验1-5
BUFDB10DUP(0)
BFDB00011110B,11111111B,6DUP(0),00110000B,00000001B
STACK1
MOVAX,100H
MOVES,AX
MOVCX,10
MOVDI,0
MOVSI,9
MOVBX,CX
;
MOVAL,BF+[BX]-1
MOVAL,ES:
-1[BX]
ANDAL,0FFH;
mov不影响标志位
JPL1;
pf为奇偶标志位,当位数为偶数时为1
LEABX,BUF
ADDBX,DI
MOV[BX],AL
INCDI
JMPL2
MOV[BUF+SI],AL
DECSI
LOOPLOP
MOVAL,BUF+[BX]-1
MOVES:
-1[BX],AL
1、对bf进行检验,再存入buf
2、对指定的内存单元进行检验,存回指定的内存单元