汇编语言实验报告

  • 格式:doc
  • 大小:583.00 KB
  • 文档页数:9

下载文档原格式

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

实验二:汇编语言

一、实验代码及结果:

3.2 若1KB的数据存放在TABLE以下,试编程序将该数据块搬到NEXT为首地址的内存区域中。

代码:

DATA SEGMENT:

TABLE DB 10 DUP (32H)

NEXT DB 10 DUP (89H)

COUNT DB 10H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX, DATA

MOV DS,AX

MOV SI,OFFSET TABLE

MOV DI,OFFSET NEXT

AGAIN:

MOV AX,[SI]

MOV [DI],AX

INC SI

INC DI

DEC COUNT

LOOP AGAIN

MOV AH,4CH

INT 21H

CODE ENDS

END START

结果:

3.3试编写10个字(16位2进制数)之和的程序。

代码:

DATA SEGMENT

ADD1 DB 1H

ADD2 DB 2H,3H,4H,5H,6H,7H,8H,9H,0AH

SUM DB (?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX, DATA

MOV DS,AX

MOV SI,OFFSET ADD1

MOV DI,OFFSET ADD2

MOV BX,OFFSET SUM

MOV CX,9H

MOV AL,[SI]

MOV AH,0H

PLUS1:ADC AL,[DI]

INC DI

LOOP PLUS1

MOV BX,AX

MOV AH,4CH

INT 21H

CODE ENDS END START

结果:

3.7试编写程序将MOLT中的一个8位2进制数乘以20,乘积放在ANS单元及其下一单元中。

代码:

DATA SEGMENT

MOLT DB 0AAH

MOLT1 DB 0AAH

ANS DB (?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX, DATA

MOV DS,AX

MOV SI,OFFSET MOLT

MOV DI,OFFSET MOLT1

MOV BX,OFFSET ANS

MOV CX,14H

MOV AX,SI

PLUS1:ADC AX,[DI]

LOOP PLUS1

MOV BX,AX

MOV AH,4CH

INT 21H

CODE ENDS END START

结果:

二、实验感想:

虽说对汇编语言的学习时间比较少、掌握和理解程度比较浅,但是通过一周多的学习和对汇编语言的上机操作能够很好的明白汇编语言程序的编写、运行和调试的方法,以及对汇编语言的实验代码和基本程序的组成有了大致的了解,为以后学习相关的知识打下了一个很好的基础。下面具体谈一下我对汇编语言以及其实验的认识和感受:

汇编语言是一种用于电子计算机、微处理器、单片机、或其他可编程器件的低级语言,在汇编语言中助记符代替机器指令和操作码,用地址符号或标号代替指令或操作数的地址从而增强程序的可读性,而我们因此也形象的叫它符号语言。

通过上机实验我大体上理解了汇编程序基本由数据段、代码

段和地址段等构成。其执行过程如下:①编辑,用编辑软件形成源程序;②汇编,用汇编语言对源程序进行汇编;③连接,用连接程序对目标程序进行连接,形成可执行文件;④执行,如果结果在屏幕上显示则直接执行可执行文件;⑤调试,用调试程序对可执行文件进行调试。

结合理论和实际,我感觉汇编语言的执行效率比C语言要高得多,比如把一个变量值加1,执行100次,C语言需要寻址内存找到变量,而后把变量值拷贝到寄存器,而后对寄存器加1再把寄存器值写回内存,如此反复100次;而汇编代码只需寻址内存一次,把变量读入寄存器,然后对寄存器自加100次,最后写回内存即可。

通过以上我认为汇编语言虽说比较繁琐复杂,但也是一个值得学习和开发使用的语言!