汇编实验1Word文件下载.docx
《汇编实验1Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编实验1Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。
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
L2
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
L1
ADDDX,7H
L1:
ADDDX,30H
MOVDX,BX
ANDDX,0F00H
MOVCL,8
ANDDX,0F0H
L3
L3:
ANDDX,0FH
L4
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、对指定的存单元进行检验,存回指定的存单元
实验1-6
源程序:
TABLEDWL3,L4,L5,L6;
偏移地址是以字为单位的
MOVAH,01H
SUBAL,30H
CMPAL,3
L9
CMPAL,6
JAL9
ANDAH,00H
MOVDL,AL
LEABX,TABLE
SUBDL,3
SHLDL,1
MOVDI,DX;
MULDL
JMP[BX+DI]
ADDAL,DL
JMPL1
SHLDL,1
SUBAL,DL
L5:
JMPL1
L6:
SHRAL,1
MOVBX,AX
L7
L7:
L8
L8:
L9:
MOVAH,4CH
结果:
实验1-7
TABLEDWLA,LB,LC,LD
MOVCX,02H
MOVAH,01H
CMPAL,30H
PEND
CMPAL,39H
JANEXT
NEXT:
CMPAL,41H
CMPAL,46H
JAPEND
SUBAL,40H
ADDAL,09H
ANDAX,00FFH
PUSHAX
CMPAL,41H
CMPAL,44H
SUBAL,41H
SHLAL,1
MOVBX,OFFSETTABLE
ADDBL,AL
JMP[BX]
LA:
POPAX
POPBX
ADDAX,BX
JMPL0
LB:
SUBAX,BX
JMPL0
LC:
MULBL
LD:
POPBX
POPAX
DIVBL
JMPL0
MOVCX,2
LOP2:
ROLBL,CL
L5
ADDDL,30H
LOOPLOP2
PEND: