北京理工大学最终实验报告.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《北京理工大学最终实验报告.docx》由会员分享,可在线阅读,更多相关《北京理工大学最终实验报告.docx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本科实验报告实验名称: 汇编实验 课程名称:汇编语言实验时间:任课教师:实验地点:实验教师:实验类型: 原理验证 综合设计 自主创新学生姓名:学号/班级:组 号:学 院:信息与电子学院同组搭档:专 业:电子信息工程成 绩:汇编语言实验报告实验一 DOS 环境下的汇编语言编程环境使用(基础与验证型)一、实验要求和目的1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序;2、熟练掌握宏汇编程序MASM 的使用;3、熟练掌握连接程序LINK 的使用;4、熟练掌握DEBUG 的使用;二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序
2、。三、实验涉及的主要知识汇编语言程序设计上机开发过程如图1.1 所示。四、实验内容1、汇编、链接并调试给出的简单程序,找出程序中的错误。(一)录入并建立汇编语言源程序文件(ASM 文件)(二) 用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件)(三) 用连接程序LINK 生成可执行程序文件(EXE 文件)(四) 程序的调试2、完成程序设计:分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和Zero 中,数组元素个数保存在其第一个字中。使用Debug 查看Positive、Negative 和Zero 三个变量的数据。五、实
3、验步骤1. 输入给出的程序发现其中有错误,根据提示和观察,发现:ADDITION后未打冒号,CMP错打为COM。修改原代码即可。修改后的代码:DATAS SEGMENT word1 DW 1,9078H byte1 db 21,world dd 12345678h msg db Hello everyone!$DATAS ENDSSTACKS SEGMENT sta dw 20 dup(?) top equ size sta STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS
4、,AX mov dx,offset msg mov ah,9 int 21hnop mov ax,0 mov bx,0 mov bx,1haddition: add ax,bx inc bx cmp bx,10 jae addition MOV AH,4CH INT 21HCODES ENDSEND START程序运行正常。实验二流程图和代码如下:从第一个数开始SATAS SEGMENTary db 1,-6, -7,0positive dw 0negative dw 0zero dw 0 数字为正?为负?为零?DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS
5、 ENDSCODES SEGMENT 为零;zero+为正,positive+ ASSUME CS:CODES,DS:DATAS,SS:STACKS 为负;negative+START: MOV AX,DATAS MOV DS,AX mov 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
6、,zero MOV AH,4CH INT 21HCODES ENDS END START根据测试数据,则应有1个正数,1个零,2个负数。结果正确换一个输入:结果正确实验二 算术运算类操作实验 (基础与设计)一、实验要求和目的1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;2、掌握各类运算类指令对各状态标志位的影响及测试方法;3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;4、熟悉无符号数和有符号数乘法和除法指令的使用;5、掌握符号位扩展指令的使用。6、掌握BCD 码调整指令的使用方法二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、D
7、EBUG、LINK、等应用程序。三、实验涉及的主要知识本实验主要进行算术运算程序设计和调试,涉及到的知识点包括:1加减法处理指令主要有加法指令 ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。2乘除法指令和符号位扩展指令主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW 和从字扩展到双字的指令CWD。3BCD 码的调整指令主要有非压缩的 BCD 码加法调整指令DAA,压缩的BCD 码减法调整指令DAS,非压缩的BCD 码加法调整指令AAA,非压缩的BCD 码减法调整指令AAS,乘法的非压
8、缩BCD码调整指令AAM,除法的非压缩BCD 码调整指令AAD。8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令, 可对表 1 所示的数据类型进行数据运算。 表 1 数据类型数据运算表各指令的格式、功能及其对标志位的影响等细节知识,请同学们查阅相关书籍,这里不再赘余。四、实验内容与步骤1、对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响。代码如下:流程图:依次计算两组数的加减乘除,用add,sub,mul,div指令即可。实验1:DATAS SEGMENT buf1 db 087h,034
9、h buf2 db 0c2h,05fh buf3 db 2 dup(?)DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov si,0 mov al,buf1si mov bl,buf1si+1 add al,bl mov buf3si,al mov al,0 mov buf3si+1,ah MOV AH,4CH INT 21HCODES ENDSEND START之后更改buf1和buf2中的
10、值完成下表计算状态标志表达式结果cfafzfofsfpf087h+034h00bb010001087h-034h0053000000087h*034h1b6c000001087h/034h00020000010c2h+5fh01210100010c2h-5fh00630100010c2h*5fh47fe0100010c2h/5fh0247010001实验2:在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓
11、冲区中。试编程实现上述运算。程序代码如下:DATAS SEGMENTfirst DB 45H,82, 96H,57Hsecond DB 12H,46H,83H,45Hthird db 4 dup(?)forth db 4 dup(?)DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AXmov si,0 mov cx,4 loop1: mov al,firstsi mov bl,secondsi add al,bl mov thirdsi,al inc si dec cx jnz loop1 M
12、OV AH,4CH INT 21HCODES ENDS END START十六进制:十进制:结果: 16进制结果 10进制结果FIRST +SECOND 57 C9 19 9CH 58 29 80 02DFIRST -SECOND 33 3C 13 12H 33 36 13 12D实验3:编程计算((Z +X*Y -328) -V)/ Y,其中X、Y、Z、V 均为16 位带符号数,假设初始数据分别装入X、Y、Z、V 单元,要求上式计算结果的商存入AX,余数存入DX 寄存器。同学自行给出初始值加以验证程序。程序代码如下:DATAS SEGMENT V DW ? X DW ? Y DW ? Z D
13、W ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV AX,X IMUL Y MOV CX,AX MOV BX,DX MOV AX,Z CWD ADD CX,AX ADC BX,DX SUB CX,328 SBB BX,0 MOV AX,V CWD SUB CX,AX SBB DX,BX MOV AX,CX IDIV Y MOV AH,4CH INT 21H CODES ENDS END START测试用例:V=50,X=72,Y=5,Z=30AX=2,DX=2。与实际计算
14、结果相符。实验三 字符串操作实验(设计性实验)一、实验要求和目的1了解汇编语言字符串处理基本流程;2熟悉汇编语言字符串处理基本指令的使用方法;3掌握利用汇编语言实现字符串处理的程序设计方法。二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识1、字符串处理基本操作流程(1)利用SI 寄存器保存源串首地址;(2)利用DI 寄存器保存目的串首地址;(3)利用CX 寄存器保存字符串长度;(4)利用CLD 或STD 指令设置字符串处理方向;(5)利用字符串处理指令实现相关处理。其中,CLD 指令使DF=0,在执行串
15、处理指令时可使地址自动增量;STD 使DF=1,在执行串处理指令时可使地址自动减量。提示:字符串处理一般都涉及到源串和目的串,汇编语言规定源串在数据段中定义,目的串在附加段中定义。2、重复前缀指令,重复次数由计数寄存器CX 中存放的值决定,指令每重复执行一次,计数器CX 中值减1,当CX 中值减至0 时,停止重复执行,继续执行下一条指令REP 无条件重复前缀,重复串操作直到计数寄存器的内容CX 为0 为止。经常与REP配合工作的字符串处理指令有MOVS、STOS 和LODS。REPE/REPZ 判断计数寄存器的内容CX 是否为0 或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束
16、,否则继续执行。可以与REPE/REPZ 配合工作的串指令有CMPS 和SCAS。REPNE/REPNZ 判断计数寄存器的内容是否为0 或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ 配合工作的串指令有CMPS 和SCAS。3、字符串处理基本指令(1)MOVS 传送指令格式:MOVS DST,SRC 或MOVSB(传送字节)或MOVSW(传送字)。后面两种形式需要与REP 指令结合使用。该指令把由源变址寄存器(SRC)指向的数据段中的一个字(或字节)数据传送到由目的变址寄存器(DST)指向的附加段中的一个字(或字节)中去,同时,根据方向
17、标志及数据格式(字或字节)对源变址寄存器和目的变址寄存器进行修改。(2)STOS 存入串指令格式:STOS DST 或STOSB(存入字节)或STOSW(存入字)。该指令把 AL 或AX 的内容存入由目的变址寄存器指向的附加段的某单元中,并根据方向标志(DF)和数据类型修改目的变址寄存器的内容。(3)LODS 从串取指令格式:LODS SRC 或LODSB(取字节)或LODSW(取字)。该指令把由源变址寄存器指向的数据段中某单元的内容传送到 AL 或AX 中,并根据方向标志和数据类型修改源变址寄存器的内容。(4)CMPS 串比较指令格式:CMPS SRC,DST 或CMPSB 或CMPSW。该
18、指令把由源变址寄存器指向的数据段中的一个字节或字与由目的变址寄存器所指向的附加段中的一个字节或字相减,但不保存结果,只根据结果设置条件标志。该指令与 REPE/REPZ 或REPNE/REPNZ 结合,可以比较两个数据串。(5)SCAS 串扫描指令格式:SCAS DST 或SCASB 或SCASW。该指令把 AL 或AX 的内容与由目的变址寄存器所指向的附加段中的一个字节或字进行比较,并不保存结果,只根据结果设置条件码。该指令与 REPE/REPZ 或REPNE/REPNZ 结合,可以从一个字符串中查找一个指定的字符。总的来说,字符串处理可以将缓冲区中一个数据块搬至存储器的另一处,比较两个字符
19、串是否相等,从缓冲区中一个数据块寻找某一个特定的关键字,顺次从一个缓冲区取字符或顺次向一个缓冲区存字符等。四、实验内容与步骤1、比较缓冲区中两字符串是否相同,相同则AL 返回0,不同AL 返回1。为了使程序的通用性比较好,字符串长度要求自动获取。(要求用字符串处理方法)程序代码如下:data segmentchuan1 db asdfghjklbchuan2 db asdfghjklbchuan0 dw ?data endscode segmentok:mov al,1jmp endlstart:mov ax,datamov ds,axlea si,chuan1lea di,chuan2mov
20、 bx,0mov cx,offset chuan2-offset chuan1cmp cx,offset chuan0-offset chuan2jne oks:mov ah,si+bxcmp ah,di+bxjne okadd bx,1mov al,0loop sendl:nopmov ax,4c00hint 21hcode endsend start2、 编写程序,将内存中某一区域的数据传送到另一区域。(要求用字符串处理方法)data segmentchuan1 db zxcvbnmqwertyuiopchuan2 db 100 dup (?)data endscode segmentst
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京理工大学 最终 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内