微机实验二报告模板.doc_第1页
微机实验二报告模板.doc_第2页
微机实验二报告模板.doc_第3页
微机实验二报告模板.doc_第4页
微机实验二报告模板.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

广州大学学生实验报告开课学院及实验室:教育学院 电子信息楼503 2012年 11月 05 日学院教育学院年级、专业、班级教育技术学姓名陈庆华学号1008200029实验课程名称计算机组成原理成绩实验项目名称实验二 汇编语言程序设计实验 指导老师孔维宏实验二 汇编语言程序设计实验一、汇编常用软件的使用一、实验目的1、熟悉要用到一些DOS命令(CD,DIR,COPY,TYPE,EXIT,RENAME等);2、熟悉汇编语言的上机过程;3、熟悉伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET;4、常用DEBUG命令的使用5、了解字符、字符串输出的方法和返回DOS系统的方法。二、实验器材计算机,汇编相关程序,WAVE6000实验仿真器三、实验原理 1、运行汇编语言源程序必备的条件:当前盘上必须包括如下文件: MASM 汇编程序文件 LINK 连接程序文件 EDIT 全屏幕文本编辑程序文件(或其他文本编辑文件) DEBUG 调试工具文件 2、汇编语言上机的四个步骤: (1)编辑源程序:建立或编辑一个扩展名为ASM源程序文件; (2)汇编程序:源程序经过汇编后可产生机器码的目标文件,扩展名为OBJ。如果在编程序中有任何语法错误,汇编程序将会给出错误信息。经过汇编程序汇编后,实际可产生三个文件,即:目标文件OBJ,列表文件LST和交叉文件CRF。 3、连接程序:汇编后产生的目标文件必须经过连接,形成可执行文件EXE,然后就可以在DOS状态下执行程序。 4、调试程序:DEBUG是调试汇编语言程序的工具,它具有跟踪程序的运行、显示修改内存与寄存器的内容等功能,因此在调试中可以寻找错误和修改错误,可以对小段程序进行汇编,是调试各种应用程序的极其方便的工具。经过DEBUG调试后的程序,必须重新进行编辑、汇编和连接后才可执行。 5、DEBUG的主要特点: (1)能够在最小环境下运行汇编程序; (2)提供简单的修改手段; (3)提供用户和计算机内部联系的窗口;四、实验步骤(一)常用软件的使用 1、在系统盘下建立一个文件夹MASM,将MASM、EDIT、LINK和DEBUG四个文件复制到此目录下; 2、点击“开始”菜单“程序”-“附件”-“DOS命令提示符”,进入到DOS状态; 3、利用CD命令进入到MASM文件夹中 CD CD MASM 4、利用DIR命令查看是否有这些文件,如果无则要重新复制 5、进入EDIT程序,输入下列内容:data segment note db hello,world!,$data endscode segment assume cs:code,ds:databegin:mov ax,data mov ds,ax mov dx,offset note mov ah,09h int 21h mov ah,4ch int 21hcode ends end begin保存文件名为你的学号_01.ASM6、汇编程序:masm 汇编源程序文件名7、连接程序:LINK 目标文件名8、执行可执行文件,查看结果9、按如上方法(5-8步骤),输入下列内容:code segment assume cs:codestart:mov al,32h mov dl,37h add dl,al sub dl,30h mov ah,2 int 21h mov ah,4ch int 21hcode ends end start保存文件名为你的学号_02.ASM10、用EXIT退出DOS系统 (二)DEBUG常用命令的使用1、通过DEBUG编写和运行汇编程序(1)进入到DEBUG状态:进入到MASM目录中,输入DEBUG执行DEBUG调试程序。进入DEBUG状态的标志是:屏幕显示“”(2)输入程序并汇编:用DEBUG的A命令送入程序。在DEBUG状态,输入A,然后回车。当输入A命令时会自动产生程序所送内容单元的段地址和偏移地址,通过偏移地址可以看到每条指令站内存单元的字节数。当程序段送完时,只键入回车键,就退出汇编状态(A状态)回到DEBUG状态“”。其中输入数据为16进制,DEBUG状态下程序中的数据都按16进制来处理,不需要键入H来表示。输入以下程序:MOV AL,32MOV DL ,37ADD DL ,ALSUB DL,30MOV AH,2INT 21INT 20(3)执行程序:用DEBUG的G命令执行刚刚汇编的程序。在DEBUG状态下直接输入G,回车,查看结果。(4)反汇编:可以用反汇编U命令将键入的程序调出,并可以得到每条汇编指令的机器码。在DEBUG状态输入:U 100 10D(5)退出DEBUG返回DOS状态:用Q命令退出。2、DEBUG常用命令的使用(1)汇编命令A 格式:A 段寄存器名:偏移地址 A 段寄存器地址:偏移地址 A 偏移地址 A 功能:该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。其中最后一个格式的偏移地址为0100H。(2)检查和修改寄存器命令R 显示CPU内所有寄存器内容和标志位状态,其格式为: -R 例如: -r AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC 18E4:0100 C70604023801 MOV WORD PTR0204,0138 DS:0204=0000 其中标志位状态的含义可见下表:标 志 名标志为1标志为0OFDFIFSFZFAFPFCF溢出(是/否) 方向(减量/增量)中断(允许/关闭)符号(负/正)零(是/否)辅助进位(是/否)奇偶(偶/奇)进位(是/否OV DNEINGZRACPECYNV UPDIPLNZNAPONC 显示和修改某个寄存器内容,其格式为: -R register name 例如,键入 -r ax 系统将响应如下: AX F1F4 : 即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,键入欲修改的内容如: -r bx BX 0369 :059F 则把BX寄存器的当前内容修改为059F。 显示和修改标志位状态,命令格式为: -RF 系统将响应,如: OV DN EI NG ZR AC PE CY - 此时如不修改其内容可按Enter键,否则,建入欲修改的内容,如: OV DN EI NG ZR AC PE CY PO NZ DI NV即可,键入的顺序是任意的。(3)追踪与显示命令T T =address 从指定地址起执行一条指令后停下来,显示所有寄存器内空及标志位的值。如未指定则从当前的CS:IP开始执行。(4)反汇编命令U从指定地址开始,反汇编32个字节,其格式为: U range 例如: -u 100 如果地址被省略则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。 (5)运行命令G -G =address1address2address3 . 其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。(6)结束命令Q-Q 它退出DEBUG,返回DOS。3、利用DEBUG调试EXE文件(1)通过EDIT编辑源程序;(2)用MASM程序汇编源程序;(3)用连接程序形成可执行文件(4)用DEBUG调试可执行文件l 用DEBUG调入可执行文件;l 用U命令查看程序是否进入内存;l 用R、T命令跟踪程序的执行的过程并察看CPU内部寄存器的内容。(5)DOS状态下查看程序清单和执行结果五、实验数据 两个源程序。程序一:data segment note db hello,world!,$data endscode segment assume cs:code,ds:databegin:mov ax,data mov ds,ax mov dx,offset note mov ah,09h int 21h mov ah,4ch int 21hcode ends end begin程序二:code segment assume cs:codestart:mov al,32h mov dl,37h add dl,al sub dl,30h mov ah,2 int 21h mov ah,4ch int 21hcode ends end start六、实验结果分析1、 指出寄存器发生的变化和写出结果。寄存器发生的变化:AX=0032 IP从0100变为0102 DX=0037 IP从0102变为0104 DX=0069 IP从0104变为0106 DX=0039 IP从0106变为0109 DX=0232 IP从0109变为010B2、 写出实验结果。试验结果:程序一:hello,world! 程序二:9二、字符及字符串的输入输出程序的编写与调试一、实验目的1、通过实验掌握基本的寻址方式;2、理解指令的功能,熟悉DEBUG的调试命令;3、掌握字符输入输出的方法;4、掌握字符串输入输出的方法;5、进一步了解DOS系统功能调用。二、实验器材计算机,汇编相关程序,WAVE6000实验仿真器三、实验原理1、单字符输入(1号调用)格式:MOV AH, 01H INT21H功能:从键盘输入字符的ASCII码送入寄存器AL中,并送显示器显示2、单字符显示(2号调用)格式:MOV DL,待显示字符的ASCII码 MOV AH, 02H INT 21H功能:将DL寄存器中的字符送显示器显示3、结束调用(4C号调用)格式:MOV AH,4CH INT21H功能:终止当前程序并返回调用程序4、INT 20H,在DEBUG下正常结束程序5、字符串的输入(10号功能调用):其作用是从键盘输入字符串。在调用前首先要建立一个输入缓冲区,规定缓冲区的第一个字节用来存放输入字符串的最大长度,可以由用户根据需要设定,第二个字节用来存放实际输入的字符数,在DOS返回时自动赋值,从第三个字节开始存放实际输入的字符串,串的输入以回车作为结束符。 格式:LEADX,缓冲区首偏移地址 MOVAH,0ah INT21H功能:从键盘上输入一字符串到用户定义的输入缓冲区中,并送显示器显示6、字符串显示(9号功能调用)格式:LEADX,待显示字符串首偏移地址 MOVAH,09H INT21H功能:将当前数据区中以结尾的字符串送显示器显示四、实验步骤1、假设DS=2000H,ES=2100H,SS=1500H,请通过实验指出下列指令的寻址方式:MOV AX,1234 MOV BX,1002 MOV DL,39 ADD AX,BXINC BX DEC DL MOV SI,3 Int 20注意:本步骤实验只要求在DEBUG状态下进行。(1)、首先进入DEBUG状态,用R命令修改各寄存器的内容,以满足题目的要求;(2)、用A命令写入要实验的8条语句;(3)、用T命令单步执行,观察并记录运行的结果;2、编写汇编语言程序,要求将键盘输入的一个大写字母用小写字母显示出来。要求用两种方法调试出结果,即DEBUG方法和编辑、汇编和连接的方法。参考程序如下:code segment assume cs:codestart:mov ah,01h int 21h add al,20h mov dl,al mov ah,02h int 21h mov ah,4ch int 21hcode ends end start3、编写汇编语言程序,要求先提示用户输入,然后将用户的输入直接显示出来。data segment / DATA段定义开始 msg db what is your name:$ /给变量msg定义存储单元,db表示定义字节数据 buf db 30,?,30 dup (?) /给变量buf定义存储单元,db表示定义字节数据, ? 只分配存储单元,不定义初值。带DUP的表达式,定义重复数据。data ends / DATA段定义结束code segment /CODE段定义开始 assume cs:code,ds:data /运行程序时,需要通过段寄存器访问存储单元 ,ASSUME指令就是用来建立段寄存器与段之间关系begin:mov ax,data /begin为程序的起始标号;将data段的起始地址传送给ax mov ds,ax /将ax的内容传送给ds,完成数据段寄存器的加载 mov dx,offset msg /offset计算变量或标号的段内偏移地址,也可以用lea dx,msg来实现以下3句为9号调用 mov ah,09h int 21h mov dx,offset buf mov ah,0ah int 21h mov ah,4ch int 21h code ends / CODE段结束end begin /用结束伪指令END加载程序的起始地址。五、实验数据写出编写的程序清单。程序一:MOV AX,1234 MOV BX,1002 MOV DL,39 ADD AX,BXINC BX DEC DL MOV SI,3 Int 20程序二:data segment msg db what is your name:$ buf db 30,?,30 dup (?) data ends code segment assume cs:code,ds:data begin:mov ax,data mov ds,ax mov dx,offset msg mov ah,09h int 21h mov dx,offset buf mov ah,0ah int 21h mov ah,4ch int 21h code ends end begin 六、实验结果分析1、 分析程序调试过程中出现的错误,是如何解决的。程序出现错误通过查书本和询问同学,细心调查解决。2、 写出程序运行的结果。程序一运行的结果:输入一个大写字母用小写字母显示出来,例如输入大写字母A,则屏幕显示的结果为Aa。程序二运行的结果:提示用户输入,然后将用户的输入直接显示出来。例如输入zhaoyanjiao,则屏幕显示的结果为:what is your name:zhaoyanjiao3、 分析执行每个命令后相应寄存器的变化。程序一的变化:BX从0000变为1002 IP从0103变为0106 BX从0000变为1002 IP从0103变为0106DX变为0039 IP从0106变为0108AX变为2236 BX=1002 IP从0108变为010ABX=1003 IP从010A变为010BDX=0038 IP从010B变为010DIP从0108变为0110IP从0110变为0172 4、 写出寻址方式。MOV AX,1234 是立即寻址MOV BX,1002 是寄存器间寻址MOV DL,39 是立即寻址ADD AX,BX 是寄存器间寻址MOV SI,3 是立即寻址 mov ax,data 是直接寻址 Mov ds,ax 是寄存器寻址 mov dx,offset msg 是寄存器间接寻址 mov ah,09h 是立即寻址 mov dx,offset buf 是寄存器间接寻址 mov ah,0ah 是立即寻址 mov ah,4ch 是立即寻址三、存储器块清零一、 实验要求指定存储器中某块的起始地址和长度,要求能将其内容清零。二、 实验目的1. 掌握存储器读写方法2. 了解存储器的块操作方法三、实验说明通过本实验,学生可以了解读写存储器的读写方法,同时也可以了解单片机编程,调试方法。如何将存储器块的内容置成某固定值(例全填充为0FFH)? 请学生修改程序,完成此操作。设置块长度设置块起始地址地址加1当前地址内容清零是否清除完结束是否四、参考程序1、参考程序data segmentBlock db 256 dup(55h)data endscode segment assume cs:code, ds:datastart proc near mov ax, data mov ds, ax mov bx, offset Block ; 起始地址 mov cx, 256 ; 清 256 字节Again: mov bx, byte ptr 0 inc bx Loop Again ; 记数减一 jmp $code ends end start五、实验步骤(1) 进入Wave6000,输入程序并检查,保存程序。(2) “编译”程序。(3) “全速执行”程序。(4) “暂停”程序运行,在“数据窗口(MEMOREY)”查看0400H起始的单元内容,并记录。(5) 在指令“jmp $”处设断点。(6) “全速执行”程序。(7) 在“数据窗口(MEMOREY)”查看0400H起始的单元内容,记录并分析实验结果。六、实验结果分析四、内存块移动一、 实验要求将指定源地址和长度的存储块移到指定目标位置二、 实验目的1 了解内存的移动方法。2 加深对存储器读写的认识。三、 实验说明块移动是计算机常用操作之一,多用于大量的数据复制和图象操作。本程序是给出起始地址,用地址加一方法移动块,请思考给出块结束地址,用地址减一方法移动块的算法。另外,若源块地址和目标块地址有重叠,该如何避免?四、程序框图设置块的源地址设置块的目标地址设置移动长度从源地址取数保存到目标地址中源地址加1目标地址加1是否移动完结束是否; 移动 256 字节data segmentSource db 256 dup(055h)Target db 256 dup(0aah)data endscode segment assume cs:code, ds:data, es:datastart proc near mov ax, data mov ds, ax mov es, ax mov si, offset Source mov di, offset Target mov cx, 256 rep movsb jmp $code ends end start五、实验步骤(1) 进入Wave6000,输入程序并检查,保存程序。(2) “编译”程序。(3) 在指令“jmp $”处设断点。(4) “全速执行”程序。(5) 在“数据窗口(MEMOREY)”分别查看0400H、0500H开始256个单元的内容,记录并分析实验结果。六、实验结果分析1、实验结果:256个aah全部被256个55h所代替。2、 用地址减一方法移动块的算法程序如下: data segment Source db 256 dup(055h) Target db 256 dup(0aah) data ends code segment assume cs:code, ds:data, es:data start proc near mov ax, data mov ds, ax mov es, ax mov si, offset Source mov di, offset Target Add si:255 Add di:255 std mov cx, 256 rep movsb jmp $ code ends end start3、如果出现源块地址与目标地址有重叠可以采用一下的办法来避免:把源块地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论