微机原理-实验二-汇编程序1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理实验报告

班级:XXXXX

姓名:XXXX

学号:20XXXX

XXXXX大学

信息科学与技术学院

信息工程系

实验二汇编语言程序设计

一、实验目的:

1、熟悉MASM编译环境,了解程序的汇编方法;

2、熟悉常用汇编指令,学习汇编程序设计方法;

3、学习汇编语言的调试过程,通过调试过程认识CPU执行程序的方式。

二、实验内容:

1、将16进制数转换成ASCII码

2、求解:将程序数据段中0,1,2,...0Ah,0Bh,0Ch,0Dh,0Eh,0Fh的16个16进制数转换为对应的ASCII码,并存储在原码所在的相应地址中。

3、解答:取一个数,首先要判断该数是否大于等于10,若大于10则加上37H 转化为对应的ASCII码;若小于10则加上30H。

三、程序流程图和程序代码

1、流程图

2、代码与注释

data segment

buf db 0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh data ends

code segment

assume cs:code,ds:data;设置代码段cs,数据段ds start:mov ax,data;将数据存到ax中

mov ds,ax;转存到ds中

mov cx,16;将16赋给cx

lea si,buf;把buf的偏移地址赋给si

L2:mov al,[si]; 将si中数据移到al

cmp al,10; 将al中数据与10相比

jae L1;将16赋给cx

sub al,7h;如果大于10加7H

L1:add al,37h;反之加37

mov [si],al;把al转存到si

inc si;si si自加

loop L2;L2循环

mov ah,4ch

int 21h;回到dos系统

code ends

end start

四、调试过程及遇到的问题

1、程序执行截图

2、调试用到的命令

mount命令、link、masm、debug -u -t -d -g -q

3、遇到的问题及解决办法

一开始不知道怎么进行程序调试,在老师讲解了 -u -t -d -g命令的用法之后,对 -u -t -d -g用法有了认识,而后就解决问题.

五、思考题

1、总结无符号条件转移指令的功能,要求更改程序,用JA指令实现相同功能。

data segment

buf db 0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov cx,16

lea si,buf

L2:mov al,[si]e

cmp al,9

ja L1

sub al,7h

L1:add al,37h

mov [si],al

inc si

loop L2

mov ah,4ch

int 21h

code ends

end start

2、总结CMP指令和test指令的用法和区别。

cmp与sub类似,即从目的操作数减去源操作数,但sub会将运算结果送至目的操作数,而cmp不会送至目的操作数;test则与and类似,即将两个操作数进行按位“与”运算,但and将运算结果送至目的操作数,而test则不会。

cmp主要用于比较两数的关系,可以在有符号数和无符号数之间进行比较。两数相等影响ZF标志,无符号数影响CF标志,有符号数影响SF和OF标志。一般根据标志位的影响设置程序跳转,即根据不同的条件完成对应的程序片段,类似于高级语言的IF-ELSE结构。所有的有条件转移指令都可以用在这条指令之后。

3、总结有符号数转移指令JG,JL功能,叙述该指令是如何使用标志位判断有符号数的大小的?

JE/JZ != 不跳转

JNZ/JNE == 不跳转

JG/JNLE <= 不跳转

JGE/JNL < 不跳转

JL/JNGE >= 不跳转

JLE/JNG > 不跳转

六、心得体会

这次试验主要是对一些基本的汇编实验有一些了解,对汇编代码用法有一些了解。在试验之后,确实是了解了一些代码的用法,也了解了dos系统一些命令的用法,比如-u,-d,-g,-t -q等等,这次试验还是很有收获的。

相关文档
最新文档