河北工业大学汇编实验报告.docx
- 文档编号:1160852
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:32
- 大小:191.02KB
河北工业大学汇编实验报告.docx
《河北工业大学汇编实验报告.docx》由会员分享,可在线阅读,更多相关《河北工业大学汇编实验报告.docx(32页珍藏版)》请在冰豆网上搜索。
河北工业大学汇编实验报告
汇编实验
实验一顺序与分支程序设计
一、实验目的
1)掌握顺序程序设计方法。
2)掌握分支程序的结构及分支程序的设计,调试方法。
2)学习数据传送及算术和逻辑运算指令的用法。
3)熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。
二、实验容
1)有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。
2)有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。
相加若有进位不存入存储单元。
3)在BUF和BUF+1、BUF+2单元分别放有一个无符号字节型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。
4)要求同上,只是比较的数为有符号数。
5)将1000H单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存回原数据区。
本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。
6)从键盘上接收一位十进制数X,计算Y值,并以十六进制形式显示出来,Y按下列公式计算。
7)从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。
a)当输入字符为A,则计算X+Y,并以十六进制形式显示出来
b)当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来
c)当输入字符为C,则计算X*Y,并以十六进制形式显示出来
d)当输入字符为D,则计算X/Y,并以十六进制形式显示出来
三、实验设备
PC机一台
四、实验准备
1)分析题目,将程序中的原始数据和最终结果的存取方法确定好。
2)画出流程图。
3)写出源程序。
4)对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。
五、实验步骤
1)输入源程序。
2)汇编、连接程序,生成.EXE文件,执行文件,检查结果。
六、实验报告的要求
1)列出源程序,说明程序的基本结构,包括程序中各部分的功能。
2)说明程序中各部分所用的算法。
3)说明主要符号和所用到寄存器的功能。
4)总结为什么在设计分支程序时必须解决三个问题:
判断、转向和定标号。
5)说明标志位CF、SF和OF的意义。
6)上机调试过程中遇到的问题是如何解决的。
7)对调试源程序的结果进行分析。
Exam1:
DATA SEGMENT;数据段
BUF1 DW 7898H
BUF2 DW 4 DUP(0),0AH,0DH,'$'
BUF3 DW 4 DUP(0),'$'
DATA ENDS;数据段结束
CODE SEGMENT;代码段
ASSUME CS:
CODE,DS:
DATA;段寄存器关联说明伪指令
BEGIN:
MOV AX,DATA
MOV DS,AX;将数据段的基地址装入数据段寄存器DS
MOV AX,BUF1;将字型变量BUF1的值装入AX寄存器
ADD AX,0;AX寄存器里的数据加0,以便进行转移测试
JS NEXT;判断(AX)的正负,若为负则转到NEXT,为正则往下顺序执行。
MOV BUF2,AX;为正,反码与原码一样
MOV BUF3,AX;为正,补码与原码一样
JMP EEE
NEXT:
AND AX,7FFFH;将符号位变为0
NOT AX;求反码
MOV BUF2,AX;将BUF1的反码装入BUF2
INC AX;求补码
MOV BUF3,AX;将补码装入BUF3
EEE:
MOV CX,0004H;将0004H装入CX计数器寄存器中
MOV DI,OFFSET BUF2;将DI指向变量BUF2开始的存储单元
MOV DX, [DI];将DI所指的数据装入DX寄存器中
ADD DI,03;将DI指针下移三个字
BBB:
MOV AX,DX;将DX中的容装入AX寄存器中
AND AX,000FH;即使BUF2的低四位不变,其余均变为0
CMP AL,0AH;比较[AL]与0AH的大小,以便能正确转换为0-9的ASCII值
JB QQQ;若[AL]<0AH,则转到QQQ,否则,顺序执行
ADD AL,07H;因为[AL]>0AH,所以[AL]+07H,使得AL能转换成相应数字的ASCII值
QQQ:
ADD AL,30H;将[AL]转换成相应数字的ASCII值
MOV [DI],AL;将AL中的容装入以DS中的容为段基地址,以DI的容为偏移地址的存储单元中
DEC DI;DI=DI-1,即将DI指向前一个存储单元
PUSH CX;保存CX寄存器的容
MOV CL,04H;给CL寄存器赋值为04H
SHR DX,CL;将[DX]逻辑右移四位
POP CX;恢复CX寄存器的容
LOOP BBB;循环判断语句,CX=CX-1,若CX不等于0,则转到BBB,将下一个低四位存入存储单元中,否则循环结束
MOV CX,0004H;给CX寄存器赋值为0004H
MOV SI,OFFSET BUF3;将SI指向变量BUF3开始的存储单元
MOV DX,[SI];将SI所指的数据装入DX寄存器中
ADD SI,03H;将DI指针下移三个字
CCC:
MOV AX,DX;将DX中的容装入AX寄存器中
AND AX,000FH;即使BUF3的低四位不变,其余均变为0
CMP AL,0AH;比较[AL]与0AH的大小,以便能正确转换为0-9的ASCII值
JB DDD;若[AL]<0AH,则转到DDD,否则,顺序执行
ADD AL,07H;因为[AL]>0AH,所以[AL]+07H,使得AL能转换成相应数字的ASCII值
DDD:
ADD AL, 30H;将[AL]转换成相应数字的ASCII值
MOV [SI],AL;将AL中的容装入以DS中的容为段基地址,以SI的容为偏移地址的存储单元中
DEC SI;SI=SI-1,即将SI指向前一个存储单元
PUSH CX;保存CX寄存器的容
MOV CL, 04H;给CL寄存器赋值为04H
SHR DX, CL;将[DX]逻辑右移四位
POP CX;恢复CX寄存器的容
LOOP CCC;循环判断语句,CX=CX-1,若CX不等于0,则转到CCC,将下一个低四位存入存储单元中,否则循环结束
MOV DX, OFFSET BUF2;将BUF2的偏移地址装入DX寄存器中
MOV AH,09H
INT 21H;在屏幕上显示BUF1的反码
MOV DX,OFFSET BUF3
MOV AH,09H
INT 21H;在屏幕上显示BUF1的补码
MOV AH,4CH
INT 21H;带返回码终止
CODE ENDS
END BEGIN
Exam2:
DATA SEGMENT;数据段
A DB 34H,18H,2 DUP(0), '$';定义字节型变量,其后的每操作数都占有一个字节
B DB 56H, 83H;定义字节型变量,其后的每操作数都占有一个字节
DATA ENDS;数据段结束
CODE SEGMENT;代码段
ASSUME CS:
CODE, DS:
DATA
START:
MOV AX,DATA
MOV DS, AX;将数据段基地址装入数据段寄存器DS
MOV AL, A;将A所指的数装入AL寄存器中
MOV BL, B;将B所指的数装入BL寄存器中
ADD AL, BL;AL+BL->AL
MOV AH, A+1;将A所指的下一个字节的数据装入AH
MOV BH, B+1;将B所指的下一个字节的数据装入BH
ADC AH,BH;AH与BH进行带进位加法
MOV A,AL;将第一个无符号数的相加结果放在以A起始的缓冲区
MOV A+1,AH;将第二个无符号数的相加结果放在以A+1起始的缓冲区
MOV CX,0014H;以下是将数据转换为相应的ASCII值
MOV DI, OFFSETA
MOV DX, [DI]
ADD DI, 03
NEXT:
MOV AX,DX
AND AX,000FH
CMP AL,0AH
JB QQQ
ADD AL,07H
QQQ:
ADD AL,30H
MOV [DI], AL
DEC DI
PUSH CX
MOV CL, 14
SHR DX, CL
POP CX
LOOP NEXT
MOV DX, OFFSET A
MOV AH,09H
INT 21H;在屏幕上显示结果
MOV AH,4CH
INT 21H;带返回码终止
CODE ENDS
END START
Exam3:
STACK SEGMENT STACK;堆栈段
DB 1000 DUP(0);定义其后的每个操作数都占有一个字节
STACK ENDS;堆栈段结束
DATA SEGMENT;数据段
BUF DB72H,34H,1FH;定义字节型变量,其后的每操作数都占有一个字节
MAX DB 2 DUP (?
), '$';定义字节型变量,其后的每操作数都占有一个字节
DATA ENDS;数据段结束
CODE SEGMENT;代码段
ASSUME CS:
CODE,DS:
DATA,SS:
STACK
BEGIN:
MOV AX, DATA
MOV DS, AX;将数据段基地址装入数据段寄存器DS
MOV AL, BUF;将BUF所指向的一个字节数据装入AL
CMP AL, BUF+1;比较BUF与BUF+1大小
JNB LP1;如果BUF不小于BUF+1,则转到lp1,否则顺序向下执行
MOV AL, BUF+1;将BUF+1所指向的一个字节数据装入AL
LP1:
CMP AL, BUF+2;将BUF和BUF1中较大的一个和BUF+2比较大小
JAE LP2;如果BUF2小,则转到lp2,否则执行顺序向下执行
MOV AL, BUF+2;此时BUF2为三个数中最大的一个,将最大数装入AL寄存器中
LP2:
MOV CX, 04H;以下是将输出的最大
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河北 工业大学 汇编 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)