汇编语言实验报告

  • 格式:docx
  • 大小:721.18 KB
  • 文档页数:24

下载文档原格式

  / 24
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Z=(5X+2Y-7)/2
设X、Y的值放在字节变量VARX、VARY中,结果存放在字节单元VARZ中。
三、实验步骤:(编辑调试的过ຫໍສະໝຸດ Baidu)
实验代码如下:
data segment;定义一个名为data的数据段
varx db 1;定义变量varx,占用一个字节空间,目前的值为1;
vary db 2;定义变量vary,占用一个字节空间,目前的值为2;
RES2 DB 0
RES3 DB 0; 令三个变量初值为0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX;重定位DS段寄存器,DS指向DATA段的段基址
MOV BX,OFFSET BUF;将BUF的段内偏移地址送到寄存器BX
如上图所示,通过运行一遍后的数据段后果显示,RES1=6,RES2=4,RES3=0A即RES3=10。
以上结果其实是经验证修改后得出的,未经修改程序如下
DATA SEGMENT
BUF DB -1, 20, 3, 30, -5, 15, 100, -54, 0, 4, 78, 99, -12, 32, 3, 23, -7, 24, 60,-51;20个带符号数,字节类型
三、实验步骤:(编辑调试的过程)
1.先画出流程图:
2.依据流程图代码如下:
DATA SEGMENT
BUF DB -1, 20, 3, 30, -5, 15, 100, -54, 0, 4, 78, 99, -12, 32, 3, 23, -7, 24, 60,-51;20个带符号数,字节类型
RES1 DB 0
JG GREATER0;大于0跳转
INC RES1;小于0加1
JMP NEXT
GREATER5:
INC RES3;大于5加1
JL BELOW0;小于0跳转
INC RES2;大于等于0小于等于5加1
JMP NEXT
GREATER5:
INC RES3;大于5加1
JMP NEXT
BELOW0:
INC RES1;小于0加1
JMP NEXT
NEXT:
INC BX;对地址加1,指向下一个字节
LOOP LOP;(CX-1)≠0时循环,每次从LOP开始
MOV AH,4CH
INT 21H
CODE ENDS
END START
(ps:经修改)
3.程序说明:
该程序要先了解对数据的存取,数据之间的比较指令CMP,然后通过loop设计循环程序遍历数组的数据,经比较判断对数据分组。
四、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的结果进行分析)
对程序进行调试:
MOV CX,20;设定循环次数=数据个数,循环指令默认的计数寄存器为CX
LOP:;循环地址标号(非保留字)
MOV AL,[BX];寄存器间接寻址,8086汇编中能间接寻址的通用寄存器只有BX/SI/DI/BP
CMP AL,5 ;与5进行比较
JG GREATER5;大于5跳转
CMP AL,0;与0比较
MOV CX,20;设定循环次数=数据个数,循环指令默认的计数寄存器为CX
LOP:;循环地址标号(非保留字)
MOV AL,[BX];寄存器间接寻址,8086汇编中能间接寻址的通用寄存器只有BX/SI/DI/BP
CMP AL,5 ;与5进行比较
JG GREATER5;大于5跳转
CMP AL,0;与0比较
RES1 DB 0
RES2 DB 0
RES3 DB 0; 令三个变量初值为0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX;重定位DS段寄存器,DS指向DATA段的段基址
MOV BX,OFFSET BUF;将BUF的段内偏移地址送到寄存器BX
varz db ?;定义变量varz,占用一个字节空间,用以存放结果;
data ends;定义的数据段结束
code segment;定义一个名为code的代码段
assume cs:code,ds:data;伪指令assume不分配内存,只是指定了存放各个段段基址的段寄存器
start:
mov ax,data;DS重定位
电子科技大学学院
标准实验报告
(实验)课程名称
电子科技大学教务处制表
第一次
一、实验目的:
1. 掌握16位DEBUG 的基本命令及其功能;
2. 学习数据传送和算术运算指令的用法;
3. 熟悉8086汇编语言程序操作的过程。
二、实验内容:
1. 学会16位汇编程序的调试与运行 ;
2. 编写8086汇编程序计算以下表达式:
div bl; al为商,ah为余数;
mov varz,al
mov ah,4ch;返回DOS
int 21h
code ends;定义的代码段结束
end start
四、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的结果进行分析)
LST文件如图:
可以得知可以将断点定在 001F来查看varz的值,debug过程如图:
2.掌握循环程序的设计与调试方法。
3.了解DOS功能调用和Irvine链接库的使用方法。
二、实验内容:(ps:02班老师没讲例题,只要二选一)
分别统计下列20个数中小于零、大于等于零且小于等于5、大于5的数据个数,分别存入字节单元RES1、RES2和RES3中。
BUF DB -1, 20, 3, 30, -5, 15, 100, -54, 0, 4, 78, 99, -12, 32, 3, 23, -7, 24, 60,-51
即当varx=1,vary=2时,varz=1。
五、总结及心得体会:
对汇编语言有了初步的了解并初步掌握了16位DEBUG 的基本命令及其功能,也一定程度上了解了数据传送和算术运算指令的用法加深了对计算机的了解,受益匪浅。报告评分:
指导教师签字:
第二次实验
一、实验目的:
1.掌握分支程序的结构、设计与调试方法。
mov ds,ax
mov al,varx;取第一个操作数
mov bl,5; 取第二个操作数
mul bl; 此时ax=5x
mov cx,ax; cx=5x
mov al,vary ;
mov bl,2 ;
mul bl; ax=2y;
add ax,cx; ax=5x+2y;
sub ax,7; ax=5x+2y-7;