岗位职责 实施方案 自查报告 整改措施 先进事迹材料 应急预案 工作计划 调研报告 调查报告 工作汇报 其他范文
首页 > 其他范文 > 其他范文

合集实验报告,()(范文)

作者:ilyou1212时间:2020-11-27 下载本文

《汇编语言程序设计》 实验报告 2012 年 11 月★★FGL

实验一:汇编语言运行环境及方法、简单程序设计 I:

实验要求:

1、绘制程序流程图 2、结合你的调试过程,整理其中用到的 debug 命令的使用方法和效果截图,并解释每一步骤的结论 3、调试中遇到的问题及解决方法 II:具体实验过程:

a.程序流程图 1、开始 输入源程序 根据实验步骤进行汇编 比较 string1与 string2 输 出 NO 输出 Match 结束

b.调试过程及 debug 命令使用方法 ·-u 命令反汇编:

·-g0b ·-d0:查看数据段内容

·-g:执行完程序显示结果 根据数据段显示的数据内容可知,在;两字符串分别为"Move the cursor backward."和"Move the cursor dackward.",因而可根据 debug 命令中的-e 将第二个字符串中的 d 修改为 b 则可使结果显示为 MATCH!具体步骤如下:

如下图所示,对内存中 1436:0029 的存储单元进行-e29 命令修改的前后数据的显示,可看到已经将 d 修改为 b,从而-g 命令运行的结果是 Match.(注:-a 和-f命令亦可修改数据区内容但使用时有一定的区别)·-q 命令退出 debug 调试:

·-t 命令的单步调试:(该过程中 IP 不断变化着)

实验二:用 DEBUG 编程:使用堆栈段将 AX 和 BX 的内容进行交换等 I:

实验要求:

1、任务 1 的指令序列 2、整理本次试验中用到的 debug 命令的使用方法及效果截图 II:

实验目的:

1、熟练掌握 DEBUG 的常用命令,学会用 DEBUG 调试程序。

2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。

3、掌握简单指令的执行过程。

III:

实验内容:

任务一、设堆栈指针 SP=2000H,AX=3000H,BX=5000H;请编一程序段将 AX 和 BX 的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用 DEBUG 调试程序进行汇编与调试。

任务二、设 DS=当前段地址,BX=0300H,SI=0002H;请用 DEBUG 的命令将存储器偏移地址 300H~304H 连续单元顺序装入 0AH,0BH,0CH,0DH,0EH。在 DEBUG 状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX 中的内容是什么。

程序清单如下:

MOV AX,BX MOV AX,0304H MOV AX,[0304H] MOV AX,[BX] MOV AX,0001[BX]

MOV AX,[BX][SI] MOV AX,0001[BX][SI] HLT IV.具体实验过程:

任务 1 ·-r 命令显示当前各寄存器的内容:

·--a a 命令编写指令:

·--g g 命令从 183E :0 0100 出开始执行之前编写的指令:

·--t t 命令进行单补调试过程(执行 mov sp,2000):

·--t t 执行 mov ax,3000 ·--t t 执行 mov bx,5000

·--t t 执行 push ax ·--t t 执行 mov ax,bx ·--t t 执行 pop bx(完成 ax、b bx x 交换))任务二:

·--r r 命令符查看没设置前各寄存器的值:

·--a a 编写指令设置寄存器 si、bx、s ds 值的代码:

·--r r 设置完成后寄存器的值:

·--d d 开始时 183e :0 300 中存储的数据:

·--e e 命令修改后的偏移地址 300--4 304 被转入 0A、0B、0C、0D :

完成上述操作后在 g debug 中输入实验中的代码的执行过程 ·--a a 在 在 g debug 中输入实验中给出的程序代码:

·--g g 命令开始从 13AE :6 0106 编写的指令(--t t 单步执行的过程):

可以看出执行完所有指令后 X AX 的 内容是 0E0D.实验三:存储器块清零和内存块移动 I:要求:

1、使用串处理指令写出完成实验任务 1、2 的完整程序(要求从高地址开始,用地址减一的方式操作;不要使用过程写法;任务完成后要能返回操作系统)2、调试中遇到的问题及解决方法 II:实验任务: 任务一:存储器块清零 任务二:存储块移动 ·III:实验具体过程:

实验任务一 程序代码:

data segment block db 256 dup(55h)data ends code segment assume cs:code,ds:data start proc near mov ax,data;对段寄存器给值 mov ds,ax mov bx,offset block;起始地址 mov bx,255;目的是实现从高地址向低地址清零 mov cx,256;;清 清 6 256 字节 again: mov [bx],byte ptr 0;字节填充 0 0 dec bx Loop again;计数加一 mov ah,4ch int 21h code ends end start

执行过程截图:

·-u 显示实验指令:

·因为指令中存在循环指令,故-915 从循环之后查看 ds 的值 ·根据 ds 的值查看内存中数据可判断存储器已完成清零:

·程序正常返回操作系统:

实验任务二 程序代码:

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 mov cx,256 rep movsb mov ah,4ch int 21h code ends end start 实验过程:

·--u u 反汇编查看程序指令:

·--0 g10 查看没移动前指定内存中的数据值:

·-g12 查看执行 b rep movsb 之后指定内存中的数据值可看出完成交换:

实验四:将键盘输入的小写字母用大写字母显示出来 I:

要求:

1、写出源程序清单并附上执行效果截图 2、调试中遇到的问题及解决方法 II:

实验目的:

1、掌握接受键盘数据的方法,并了解将键盘数据显示时,须转为ASCII码的原理。

2、掌握 DOS 功能调用的编程方法。

III:

实验内容:

试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

IV:

编程提示:

利用 DOS 功能调用 INT21H 的 1 号功能从键盘输入字符和 2 号功能在显示器上显示一个字符。

V:实验具体过程:

实验代码:

data segment string1 db "Input error!Please input between a to z!",0ah,0dh,"$" string2 db "$";S DOS 功能调用 H int 21H 中 中 9 9 号功能要求的要显示字符串的结束标志。

data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax L0: mov ah,1;从键盘输入一个字符(1 int21 的 的 1 1 号功能)int 21h cmp al,0dh;;检验寄存器中的值是不是十进制的 13(p cmp)指令的使用!)jz exit cmp al,"a" jae L1;如果大于等于 a, 则转到 1 L1 处执行 jb L3;如果小于 a, 则转到 3 L3 处执行 L1:cmp al ,"z";与 与 z z 相比 jna L2;小于等于 z z 则转到 2 L2 处执行 ja L3;大于 z z 则转到 3 L3 处执行 L2:sub al,20h;al=al--20h mov cl,al lea dx,string2 mov ah,9 int 21h mov dl,0

mov dl,cl mov ah,2;输出 L DL 寄存器里面的内容(1 int21 的 的 2 2 号功能)i i nt 21h mov dl,0ah;0ah 表示回车 mov ah,2 int 21h h mov dl,0dh;0dh 表示换行 mov ah,2 int 21h jmp L0 L3: lea dx,string1 mov ah,9;输出字符串(1 int21 的 的 9 9 号功能)int 21h jmp L0 exit :

mov ah,4ch;返回 DOS int 21h code ends end start ·-u 反汇编查看内存中对应的源程序:

·-g 执行程序,及其正确的测试结果:

·错误的测试结果 ·回车结束程序,返回操作系统:

合集实验报告代码(范文)

实验报告范文

实验报告(范文)

土工实验报告范文

统计学实验报告范文

《统计学实验报告范文.docx》
统计学实验报告范文
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
相关文章
猜你喜欢