河北工业大学汇编语言程序设计实验Word格式文档下载.docx
- 文档编号:17453141
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:28
- 大小:62.19KB
河北工业大学汇编语言程序设计实验Word格式文档下载.docx
《河北工业大学汇编语言程序设计实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《河北工业大学汇编语言程序设计实验Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
AX,7FFFH;
将符号位变为0
NOT
AX;
求反码
BUF2,AX;
将BUF1的反码装入BUF2
INC
AX;
求补码
BUF3,AX;
将补码装入BUF3
EEE:
CX,0004H;
将0004H装入CX计数器寄存器中
DI,OFFSET
BUF2;
将DI指向变量BUF2开始的存储单元
DX,
[DI];
将DI所指的数据装入DX寄存器中
DI,03;
将DI指针下移三个字
BBB:
AX,DX;
将DX中的内容装入AX寄存器中
AX,000FH;
即使BUF2的低四位不变,其余均变为0
CMP
AL,0AH;
比较[AL]与0AH的大小,以便能正确转换为0-9的ASCII值
JB
QQQ;
若[AL]<
0AH,则转到QQQ,否则,顺序执行
AL,07H;
因为[AL]>
0AH,所以[AL]+07H,使得AL能转换成相应数字的ASCII值
QQQ:
AL,30H;
将[AL]转换成相应数字的ASCII值
[DI],AL;
将AL中的内容装入以DS中的内容为段基地址,以DI的内容为偏移地址的存储单元中
DEC
DI;
DI=DI-1,即将DI指向前一个存储单元
PUSH
CX;
保存CX寄存器的内容
CL,04H;
给CL寄存器赋值为04H
SHR
DX,CL;
将[DX]逻辑右移四位
POP
恢复CX寄存器的内容
LOOP
BBB;
循环判断语句,CX=CX-1,若CX不等于0,则转到BBB,将下一个低四位存入存储单元中,否则循环结束
CX,0004H;
给CX寄存器赋值为0004H
SI,OFFSET
BUF3;
将SI指向变量BUF3开始的存储单元
DX,[SI];
将SI所指的数据装入DX寄存器中
ADD
SI,03H;
将DI指针下移三个字
CCC:
AX,DX;
AND
AX,000FH;
即使BUF3的低四位不变,其余均变为0
JB
DDD;
0AH,则转到DDD,否则,顺序执行
DDD:
AL,
30H;
[SI],AL;
将AL中的内容装入以DS中的内容为段基地址,以SI的内容为偏移地址的存储单元中
DEC
SI;
SI=SI-1,即将SI指向前一个存储单元
PUSH
CX;
CL,
04H;
SHR
DX,
CL;
POP
LOOP
CCC;
循环判断语句,CX=CX-1,若CX不等于0,则转到CCC,将下一个低四位存入存储单元中,否则循环结束
OFFSET
将BUF2的偏移地址装入DX寄存器中
AH,09H
INT
21H;
在屏幕上显示BUF1的反码
DX,OFFSET
BUF3
AH,09H
21H;
在屏幕上显示BUF1的补码
AH,4CH
带返回码终止
CODE
ENDS
END
BEGIN
运行程序:
执行jing1.exe敲回车:
2)有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。
相加若有进位不存入存储单元。
A
DB
34H,18H,2
DUP(0),
'
;
定义字节型变量,其后的每操作数都占有一个字节
B
56H,
83H;
SEGMENT;
CODE,
DS:
DATA
START:
DS,
AX;
将数据段基地址装入数据段寄存器DS
AL,
A;
将A所指的数装入AL寄存器中
BL,
B;
将B所指的数装入BL寄存器中
BL;
AL+BL->
AL
AH,
A+1;
将A所指的下一个字节的数据装入AH
BH,
B+1;
将B所指的下一个字节的数据装入BH
ADC
AH,BH;
AH与BH进行带进位加法
A,AL;
将第一个无符号数的相加结果放在以A起始的缓冲区
A+1,AH;
将第二个无符号数的相加结果放在以A+1起始的缓冲区
CX,0014H;
以下是将数据转换为相应的ASCII值
DI,
OFFSETA
MOV
DX,
[DI]
03
AX,DX
AX,000FH
CMP
AL,0AH
JB
QQQ
AL,07H
AL,30H
[DI],
AL
DI
CX
14
CL
POP
LOOP
NEXT
A
INT
在屏幕上显示结果
END
START
3)在BUF和BUF+1、BUF+2单元分别放有一个无符号字节型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。
STACK
SEGMENT
STACK;
堆栈段
1000
DUP(0);
定义其后的每个操作数都占有一个字节
堆栈段结束
BUF
DB72H,34H,1FH;
MAX
DB
2
DUP
(?
),
DATA
DATA,SS:
STACK
AX,
DATA
BUF;
将BUF所指向的一个字节数据装入AL
BUF+1;
比较BUF与BUF+1大小
JNB
LP1;
如果BUF不小于BUF+1,则转到lp1,否则顺序向下执行
BUF+1;
将BUF+1所指向的一个字节数据装入AL
LP1:
CMP
BUF+2;
将BUF和BUF1中较大的一个和BUF+2比较大小
JAE
LP2;
如果BUF2小,则转到lp2,否则执行顺序向下执行
BUF+2;
此时BUF2为三个数中最大的一个,将最大数装入AL寄存器中
LP2:
CX,
04H;
以下是将输出的最大数转换为相应的ASCII值MOV
MAX
DL,
INC
LP3:
0FH
0AH
LP4
07H
LP4:
30H
[DI],AL
DEC
03H
CL
DL
LP3
OFFSET
MAX
09H
21H
4CH
21H
CODE
ENDS
BEGIN
4)要求同上,只是比较的数为有符号数。
STACK
SEGMENT
STACK
DB1000
DUP(0)
SEGMENT
BUFDB
98H,
75H,
32H
MAX
DB4
DUP(?
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
AX,DATA
DS,
AX
AL,
BUF
BUF+1
JG
LP1;
JG为比较两个有带符号数的大小,比较BUF和BUF1的大小,若BUF>
BUF1,则跳转到lp1继续执行,否则顺序向下执行
XCHG
BUF+1;
交换AL寄存器中的内容和BUF1,使AL寄存器中存放BUF和BUF1中较大的一个
MAX,
AL
JGElp2;
比较两个带符号数,如果BUF2小,则转到lp2,否则执行顺序向下执行
MOVAL,BUF+2
Lp2:
MOVMAX,AL;
以下是将输出的最大数转换为相应的ASCII值,与1)题相同
CX,
04H
DI,
MAX
DL,
DI
LP4
ADDAL,
[DI],
PUSH
CX
CL,
02
LP3
AH,
END
5)将1000H单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存回原数据区。
本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果
ORG3000H;
转到3000H内存单元,在DEBUG状态下输入-a3000
3000BE0010MOVSI,1000;
给SI赋值1000
3003BF0910MOVDI,1009;
给DI赋值1009
30068A14MOVDL,[SI];
将SI中的内容赋给DL
300880C200ADDDL,00;
DL值的+00,以便进行转移测试
300B7B0BJPO2018;
奇偶位为0则转移到3018执行
300D8615XCHGDL,[DI];
交换DL和DI中的内容
300F8814MOV[SI],DL;
把DL的值给SI
30114FDECDI;
DI减1
301239FECMPSI,DI;
比较SI和DI的值的大小
30147407JE201D;
如果等于则转移到301D执行
3016EBF0JMP2008;
无条件转移到3008执行
301846INCSI;
SI加1
30198A14MOVDL,[SI];
把SI的值给DL
301BEBF5JMP2012;
无条件转移到3012挪移
301DF4HLT
实验二循环与子程序程序设计
一、实验目的
1)加深对循环结构的理解。
2)掌握循环程序的设计方法。
3)学习子程序的定义和调用方法。
4)掌握子程序、子程序的嵌套、递归子程序的结构。
5)掌握子程序设计、编制及调试。
6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
二、实验内容
1)编制程序计算S=1+2·
3+3·
4+4·
5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。
2)将从3000H内存单元开始的100个字节存储单元全部清0。
3)编制在屏幕上显示九九乘法表的程序。
4)编制在屏幕上显示用*组成的三角形的程序。
5)设有五个字数据存放在以BUF为首地址的内存单元中,要求采用调用多个字数据相加的子程序方法编程,和的低位字放在RESULT单元,和的高位字放在RESULT+2单元,并将结果显示在屏幕上。
6)编写一个递归子程序,计算指数函数Xn的值,其中X,n从键盘输入。
三、源程序
EXAM2-1
DATASEGMENT
BUFDB’S=1+2×
3+3×
4+4×
5+…+N(N+1)+…=’,’$’
RESDW4DUP(0),’$’
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETBUF
MOVAH,09H
INT21H
MOVDX,1
MOVBL,2
NEXT:
MOVAL,BL
INCBL
MULBL
ADDDX,AX
CMPAX,200
JNANEXT
MOVCX,0004H
MOVDI,OFFSETRES
ADDDI,03H
NEXT1:
MOVAX,DX
ANDAX,000FH
CMPAL,0AH
JBNEXT2
ADDAL,07
NEXT2:
ADDAL,30H
MOV[DI],AL
DECDI
PUSHCX
MOVCL,04
SHRDX,CL
POPCX
LOOPNEXT1
MOVDX,OFFSETRES
MOVAH,09H
MOVAH,4CH
CODEENDS
ENDSTART
执行程序EXAM2-1·
EXE,屏幕上显示结果:
S=1+2×
5+…+N(N+1)+…=045F
EXAM2-2
ORG2000H
2000BF0030MOVDI,3000
2003B164MOVCL,64
2005C60500MOVBYTEPTR[DI],0
200847INCDI
2009FEC9DECCL
200B75F8JNZ2005
200DF4HLT
EXAM2-3
ATAD
DB?
2AH,?
3DH,?
?
20H,'
ATAD1DB?
0DH,0AH,'
STACKSEGMENTSTACK
DB20HDUP(0)
STACKENDS
ASSUMECS:
MOVAX,DATA
MOVDS,AX
MOVCL,09H
MOVBL,00H
OKL:
MOVAL,00H
OK1:
INCAL
PUSHAX
CMPBL,AL
JZOK
MOVBH,AL
MOVDI,OFFSETATAD
CALLOKP
POPAX
JMPOK1
OK:
MOVDI,OFFSETATAD1
LOOPOKL
MOVAH,4CH
OKPPROC
PUSHBX
ADDBX,3030H
MOV[DI],BH
MOV[DI+02H],BL
MOVCX,0AH
MOVDH,00H
OKL2:
CMPAX,CX
JSOK2
ADDCX,0AH
INCDH
JMPOKL2
OK2:
SUBCX,0AH
SUBAX,CX
MOVAH,DH
ADDAX,3030H
MOV[DI+04H],AH
MOV[DI+05H],AL
MOVDX,DI
MOVAH,09H
POPBX
RET
OKPENDP
执行程序EXAM2-2·
1*1=01
1*2=022*2=04
1*3=032*3=063*3=09
1*4=042*4=083*4=124*4=16
1*5=052*5=103*5=154*5=205*5=25
1*6=062*6=123*6=184*6=245*6=306*6=36
1*7=072*7=143*7=214*7=285*7=356*7=427*7=49
1*8=082*8=163*8=244*8=325*8=406*8=487*8=568*8=64
1*9=092*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81
EXAM2-4
CODESSEGMENT
CODES
XORBX,BX
MOVDL,2AH
MOVCX,9
LOP:
INCBL
MOVCL,BL
LOP2:
MOVAH,02H
INT21H
LOOPLOP2
POPCX
MOVDL,0AH
MOVAH,02H
MOVDL,0DH
CMPBL,9
JZENDPRO
LOOPLOP
ENDPRO:
MOVAH,4CH
CODESENDS
执行程序EXAM2-4·
*
**
***
****
*****
******
*******
********
*********
EXAM2-5
DB
1024
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河北 工业大学 汇编语言 程序设计 实验