安工大汇编语言实验报告_第1页
安工大汇编语言实验报告_第2页
安工大汇编语言实验报告_第3页
安工大汇编语言实验报告_第4页
安工大汇编语言实验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、实验一:汇编语言运行环境及方法、简单程序设计一、程序说明本程序用来比较两个字符串string1和string2所含的字符是否相同。若相同则显示Match,否则显示Nomatch。在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1和mess2,分别代表Match和Nomatch。再代码段比较字符串string1和string2,通过比较判断是否相同。若相同则显示Match,否则显示Nomatch三程序代码 datarea segment string1 db 'Move the cursor backward.' string2 db 

2、9;Move the cursor backward.' mess1 db 'Match.',13,10,'$' mess2 db 'No match.',13,10,'$' datarea ends prognam segment main proc far assume cs:prognam,ds:datarea,es:datarea start: push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov es,ax lea si,string1 lea di,str

3、ing2 cld mov cx,24 repz cmpsb jz match lea dx,mess2 jmp short disp match: lea dx,mess1 disp: mov ah,9 int 21h ret main endp prognam ends end start四、调试说明编译链接运行常用到的debug调试指令:用-g命令来用运行程序,用-u命令来显示程序,用-d 命令来查看数据段的情况,用-e或-f命令来修改需要改正的部分,用-t指令来逐步执行程序,用-r指令来查看寄存器和修改寄存器的值,-q命令用来退出debug程序。在这些命令的后面加上地址,可以将命令执行到

4、相应的地方。在Debug中用-g运行:用-u命令显示程序:-g0b 将断点设置在指令LEA SI;之前根据其中指示的ds寄存器内容查看数据段情况:用e命令修改数据段字符串:再次运行结果:用q命令退出debug:实验二 用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等一、实验目的:1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。3、掌握简单指令的执行过程。二、实验内容:1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,

5、用DEBUG调试程序进行汇编与调试。编程后用t单步执行:显示交换后结果:2、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,0304HMOV AX,BXMOV AX,0001BXMOV AX,BXSIMOV AX,0001BXSIHLT当数据传送完毕时,AX=0E0D单步执行查看结果:实验三、

6、存储器块清零和内存块移动一、 程序说明 第一个程序用来存储块清零,先设置块起始地址,然后设置块长度,再将当前地址内容清零,地址加一,然后判断是否清完,若清完则结束,否则返回到上一步。第二个程序用来移动内存块,先设置块的源地址,再设置块的目标地址,然后设置移动长度,安长度重复传送数据直到结束。二、 调试说明 第一个程序在进入debug后,先用-u指令查看一下程序,再将断点设置在指令Loop again之后,通过指令-g加上指令Loop again后的地址,将程序运行到Loop again之后停止,然后再通过-d指令查看相关内存内容是否被清零。第二个程序在进入到debug后,先用-u指令查看一下程

7、序,再将断点设置在指令rep movsb之前,通过指令-g运行后,然后用-d指令查看一下内存块的相关内容。程序一:data segmentblock db 256 dup(55h)data endscode segmentassume cs:code,ds:datastart proc nearmov ax,datamov ds,axmov bx,offset blockmov cx,256again:mov bx,byte ptr 0inc bxLoop againjmp $code endsend start程序二:data segmentsource db 256 dup(055h)ta

8、rget db 256 dup(0aah)data endscode segmentassume cs:code,ds:data,es:datastart proc nearmov ax,datamov ds,axmov es,axmov si,offset sourcemov di,offset targetmov cx,256rep movsbjmp $code endsend start单步执行:执行到rep movsb之前查看ds段和es段内容:移动后查看ds段和es段内容:实验四 将键盘输入的小写字母用大写字母显示出来一、实验目的:1、掌握接受键盘数据的方法,并了解将键盘数据显示时,须转为ASCII码的原理。2、 掌握DOS功能调用的编程方法。二程序说明 本程序用来将小写字母转变为大写,并在屏幕上显示出来。先利用DOS功能调用INT21H的1号功能从键盘输入字符,然后调用INT21H的2号功能显示出

温馨提示

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

评论

0/150

提交评论