汇编实验报告河北工业大学Word下载.docx
《汇编实验报告河北工业大学Word下载.docx》由会员分享,可在线阅读,更多相关《汇编实验报告河北工业大学Word下载.docx(73页珍藏版)》请在冰豆网上搜索。
MOVCL,04H
SHRDX,CL
POPCX
LOOPBBB
MOVCX,0004H
MOVSI,OFFSETBUF3
MOVDX,[SI]
ADDSI,03H
CCC:
JBDDD
DDD:
MOV[SI],AL
DECSI
PUSHCX
LOOPCCC
MOVDX,OFFSETBUF2
MOVAH,09H
INT21H
MOVDX,OFFSETBUF3
MOVAH,4CH
CODEENDS
ENDBEGIN
运行结果:
2)有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。
相加若有进位不存入存储单元。
ADB34H,18H,2DUP(0),'
BDB56H,83H
DATAENDS
CODESEGMENT
START:
MOVAL,A
MOVBL,B
ADDAL,BL
MOVAH,A+1
MOVBH,B+1
ADCAH,BH
MOVA,AL
MOVA+1,AH
MOVCX,0004H
MOVDI,OFFSETA
MOVDX,[DI]
QQQ:
MOVCL,04
LOOPNEXT
MOVDX,OFFSETA
MOVAH,09H
INT21H
MOVAH,4CH
CODEENDS
ENDSTART
3)在BUF和BUF+1、BUF+2单元分别放有一个无符号字节型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。
STACKSEGMENTSTACK
DB1024DUP(0)
STACKENDS
BUFDB70H,35H,1FH
MAXDB2DUP(?
),'
DATA,SS:
STACK
MOVAL,BUF
CMPAL,BUF+1
JNBLP1
MOVAL,BUF+1
LP1:
CMPAL,BUF+2
JAELP2
MOVAL,BUF+2
LP2:
MOVCX,02H
MOVDI,OFFSETMAX
MOVDL,AL
INCDI
LP3:
ANDAL,0FH
JBLP4
LP4:
SHRDL,CL
MOVAL,DL
LOOPLP3
MOVDX,OFFSETMAX
ENDBEGIN
4)要求同上,只是比较的数为有符号数。
BUFDB98H,75H,32H
JGLP1
XCHGAL,BUF+1
LP1:
CMPAL,BUF+2
JGLP2
XCHGAL,BUF+2
LP2:
MOVMAX,AL
MOVDI,OFFSETMAX
MOVDL,[DI]
INCDI
LP3:
CMPAL,0AH
JBLP4
ADDAL,07H
LP4:
ADDAL,30H
MOV[DI],AL
DECDI
MOVCL,04
SHRDX,CL
POPCX
LOOPLP3
MOVDX,OFFSETMAX
6)从键盘上接收一位十进制数X,计算Y值,并以十六进制形式显示出来,Y按下列公式计算。
XDB?
YDB?
DW20HDUP(?
)
ASSUMECS:
START:
MOVDS,AX
l0:
MOVDL,0AH
MOVAH,2
MOVDL,0DH
MOVAH,1
SUBAL,30H
MOVX,AL
CMPX,3
JZl1
CMPX,4
JZl2
CMPX,5
JZl3
CMPX,6
JZl4
CMPX,0
JZl6
JMPl0
l1:
MOVAL,X
MULX
ADDAL,X
MOVY,AL
JMPl5
l2:
SUBAL,X
l3:
l4:
MOVBL,2
DIVBL
l5:
MOVDL,Y
MOVCL,4
SHRDL,CL
CMPDL,9
JLEl7
ADDDL,7
l7:
ADDDL,30H
ANDDL,0FH
JLEl8
l8:
l6:
7)从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。
DATASSEGMENT
xdb?
ydb?
zdb?
sdb?
DATASENDS
CODESSEGMENT
CODES,DS:
DATAS
start:
movax,datas
movds,ax
l0:
movah,1
int21h
subal,30h
movx,al
movdl,0ah
movah,2
movdl,0dh
movah,1
movy,al
movz,al
cmpz,'
a'
jzl1
b'
jzl2
c'
jzl3
d'
jzl4
q'
jzl7
l1:
moval,x
addal,y
movs,al
jmpl6
l2:
subal,y
cmps,0
jsl5
jnsl6
l3:
muly
l4:
movbl,y
movah,0
divbl
l5:
negs
l6:
movdl,0ah
movah,2
int21h
movdl,0dh
movdl,s
l9:
adddl,30h
jmpl0
l7:
movah,4ch
CODESENDS
ENDstart
实验二循环与子程序程序设计
一、实验目的
1)加深对循环结构的理解。
2)掌握循环程序的设计方法。
3)学习子程序的定义和调用方法。
4)掌握子程序、子程序的嵌套、递归子程序的结构。
5)掌握子程序设计、编制及调试。
6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
1)编制程序计算S=1+2·
3+3·
4+4·
5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。
BUFDB'
S=1+2*3+3*4+4*5+…+N(N+1)+…='
'
RESDW4DUP(0),'
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETBUF
MOVAH,09H
MOVDX,1
MOVBL,2
NEXT:
MOVAL,BL
INCBL
MULBL
ADDDX,AX
CMPAX,200
JNANEXT
MOVDI,OFFSETRES
ADDDI,03H
NEXT1:
MOVAX,DX
ANDAX,000FH
CMPAL,0AH
JBNEXT2
ADDAL,07
NEXT2:
ADDAL,30H
LOOPNEXT1
MOVDX,OFFSETRES
MOVAH,4CH
2)将从3000H内存单元开始的100个字节存储单元全部清0。
ORG3000H
XDB100DUP(?
DB10DUP(?
LEASI,X
MOVCX,100
LP:
ANDBYTEPTR[SI],00H
INCSI
LOOPLP
3)编制在屏幕上显示九九乘法表的程序。
XDB1
YDB1
ZDB1
SDB?
YSDB?
TENDB10
MOVDS,AX;
装入段寄存器
L1:
MULY
MOVZ,AL
CALLSC
INCY
MOVBL,X
CMPY,BL
JAL2
JMPL1;
内循环
L2:
INCX
CMPX,9H
JAL3
MOVY,1
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
INT21H;
输出回车换行
外循环
L3:
SCPROC;
输出子程序
ADDY,30H
MOVDL,Y
输出Y
MOVDL,'
X'
输出X
ADDX,30H
MOVDL,X
='
输出=
MOVAX,0
MOVAL,Z
DIVTEN
MOVS,AL
MOVYS,AH
cmps,1
jbl10
ADDS,30H
MOVDL,S
MOVAH,2
INT21H;
输出高位结果
ADDYS,30H
MOVDL,YS
输出低位结果;
输出Z
'
输出一个空格
jmpl11
l10:
ADDYS,30H
MOVDL,YS
MOVAH,2
输出低位结果
输出一个空格
l11:
MOVAX,0
MOVAL,X-30H
SUBX,30H
SUBY,30H
RET
SCENDP
ENDSTART
4)编制在屏幕上显示用*组成的三角形的程序
NDB?
NNDB?
IDB1
STACKSEGMENT
DW20DUP(?
STACKENDS
MOVAH,1
输入一个数存入AL
MOVN,AL;
输入的数存入N
SUBN,30H
L10:
MOVAL,N
SUBAL,I
MOVNN,AL
CMPNN,1
JBL1
DECNN
JMPL2;
循环输出N-I个空格
MOVBL,I
SHLBL,1
SUBBL,1;
(IX2)-1
L14:
*'
DECBL
CMPBL,1
JBL3
JMPL14
L4:
JBL5
JMPL4;
循环输出N-I个空格
L5:
INCI
CMPBL,N
JAL6
MOVBL,0
JMPL10
L6:
ENDSTART
5)设有五个字数据存放在以BUF为首地址的内存单元中,要求采用调用多个字数据相加的子程序方法编程,和的低位字放在RESULT单元,和的高位字放在RESULT+2单元,并将结果显示在屏幕上。
BUFDW0F101H,110DH,52H,100H,456H
COUNT=($-BUF)/2
RESULTDW4DUP(?
WDADDPROC
PUSHDI
MOVAX,0
MOVDX,0
MOVDI,OFFSETBUF
ADDAX,[DI]
JNCNEXT1
INCDX
ADDDI,2
LOOPNEXT2
POPDI
WDADDENDP
SHOWPROC
MOVCX,04H
MOVDI,OFFSETRESULT
MOVBX,AX
ADDDI,07H
MOVAX,BX
ADDAL,07H
ADDAL,30H
MOV[DI],AL
MOVCL,04
SHRBX,CL
MOVAX,DX
MOVCL,04H
SHRDX,CL
POPDI
SHOWENDP
MOVAX,DATA
MOVCX,COUNT
CALLWDADD
CALLSHOW
MOVDX,OFFSETRESULT
实验三算术运算与代码转换程序设计
1)掌握算术运算程序的设计方法。
2)掌握代码转换程序的设计方法。
3)进一步掌握各种程序结构。
4)熟练掌握和使用用DEBUG调试程序。
二、实验内容
1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。
DATASEGMENT
TABLEDWL1,L2,L3,L4,L5
BUFDB32H,20H,12H
NUMDB04H
DATAENDS
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACK1ENDS
CODESEGMENT
STACK1
MOVAX,DATA
MOVDS,AX
MOVBL,BUF
MOVBH,BUF+1
MOVCL,BUF+2
CMPBL,BH
JAL1
CMPBH,CL
JAL2
JMPL3
CMPBL,CL
JAL4
MOVDL,BUF+1
ANDDL,0F0H
SARDL,1
ADDDL,30H
MOVAH,02H
MOV