《北京理工大学最终实验报告分析.docx》由会员分享,可在线阅读,更多相关《北京理工大学最终实验报告分析.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、北京理工大学最终实验报告分析 本科实验报告实验名称:汇编实验 汇编语言实验报告 实验一 DOS 环境下的汇编语言编程环境使用(基础与验证型) 一、实验要求和目的 1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序; 2、熟练掌握宏汇编程序MASM 的使用; 3、熟练掌握连接程序LINK 的使用; 4、熟练掌握DEBUG 的使用; 二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 汇编语言程序设计上机开发过程如图1.1 所示。 四、实验内容 1、汇编、链接并调试给出的简单程序,找出程序中的错误。
2、 (一)录入并建立汇编语言源程序文件(ASM 文件) (二)用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件) (三)用连接程序LINK 生成可执行程序文件(EXE 文件) (四)程序的调试 2、完成程序设计: 分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative 和Zero 中,数组元素个数保存在其第一个字中。使用Debug 查看Positive、Negative 和Zero 三个变量的数据。 五、实验步骤 1.输入给出的程序 发现其中有错误,根据提示和观察,发现: ADDITION后未打冒号,CMP错打为COM。修改原代码
3、即可。 修改后的代码: DATAS SEGMENT word1 DW 1,9078H byte1 db 21,world dd 12345678h msg dbHello everyone!$ DATAS ENDS STACKS SEGMENT sta dw 20 dup(?) top equ size sta STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX mov dx,offset msg mov ah,9 int 21h nop mov ax,0 mov
4、bx,0 mov bx,1h addition: add ax,bx inc bx cmp bx,10 jae addition MOV AH,4CH INT 21H CODES ENDS END START 程序运行正常。 实验二 流程图和代码如下: SATAS SEGMENT ary db 1,-6, -7,0 positive dw 0 negative dw 0 zero dw 0 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME START : MOV AX,DATAS MOV DS,AX mo
5、v cx,3 mov si,0 L1: mov al,arysi cmp al ,0 jg L2 jl L4 inc zero jmp L3 L2:inc positive jmp L3 L4: inc negative L3:inc si dec cx jnz L1 mov ax,positive mov bx,negative mov dx,zero MOV AH,4CH INT 21H CODES ENDS END START 根据测试数据,则应有1个正数,1个零,2个负数。 结果正确 换一个输入: 结果正确 实验二算术运算类操作实验 (基础与设计) 一、实验要求和目的 1、了解汇编语言
6、中的二进制、十六进制、十进制、BCD 码的表示形式; 2、掌握各类运算类指令对各状态标志位的影响及测试方法; 3、熟悉汇编语言二进制多字节加减法基本指令的使用方法; 4、熟悉无符号数和有符号数乘法和除法指令的使用; 5、掌握符号位扩展指令的使用。 6、掌握BCD 码调整指令的使用方法 二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 本实验主要进行算术运算程序设计和调试,涉及到的知识点包括: 1加减法处理指令 主要有加法指令ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。2乘除法指令
7、和符号位扩展指令 主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号 数除法指令IDIV,以及符号位从字节扩展到字的指令CBW 和从字扩展到双字的指令CWD。3BCD 码的调整指令 主要有非压缩的BCD 码加法调整指令DAA,压缩的BCD 码减法调整指令DAS,非压 缩的BCD 码加法调整指令AAA,非压缩的BCD 码减法调整指令AAS,乘法的非压缩BCD 码调整指令AAM,除法的非压缩BCD 码调整指令AAD。 8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表1 所示的数据类型进行数据运算。 表 1 数据类型数据运算表 各指令的格式、功能及其对标志位的影响等细节知识,请同学们查阅相关书籍,这里不 再赘余。 四、实验内容与步骤 1、对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响。 代码如下: 流程图:依次计算两组数的加减乘除,用add,sub,mul,div指令即可。 实验1: DATAS SEGMENT buf1 db 087h,034h buf2 db 0c2h,05fh buf3 db 2 dup(?) DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS
限制150内