汇编语言程序设计实验

  • 格式:docx
  • 大小:1.07 MB
  • 文档页数:33

下载文档原格式

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

目录

目录 (1)

实验一利用DEBUG熟悉常用指令的使用 (2)

一、实验目的 (2)

二、示例 (2)

三、实验题 (2)

实验二汇编程序和连接程序的使用 (6)

一、实验目的。 (6)

二、示例。 (6)

三、实验题。 (8)

实验三顺序结构程序设计 (11)

一、实验目的 (11)

二、示例 (11)

三、实验题 (12)

四、实验报告 (15)

实验四循环结构程序设计 (16)

一、实验目的 (16)

二、示例 (16)

三、实验题 (18)

实验五分支结构程序设计 (21)

一、实验目的 (21)

二、示例 (21)

三、实验题 (22)

实验六子程序设计 (29)

一、实验目的 (29)

二、实验题 (29)

实验一利用DEBUG熟悉常用指令的使用

一、实验目的

熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。

二、示例

请分别用一条汇编语言指令完成如下功能:(过程略)。

1.用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。

ADD AL,[BX][SI]

2.用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。

ADD WORF PTR [0520H],3412H

三、实验题

1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执行完后AX寄存器的内容。要求输入指令,相应存储单元的内容要事先设置,单步

P执行,观察执行结果。

(设置存储器的值)

①.MOV AX,1200H

②.MOV AX,BX

③.MOV AX,[1200H]

④.MOV AX,[BX]

⑤.MOV AX,1100[BX]

⑥.MOV AX,[BX][SI]

⑦.MOV AX,1100[BX][SI]

⑧ .MOV AX,[BP+SI+04]

2、上机调试、验证教材习题3.15。单步执行、观察运行结果并与自己的判断进行比较。(1)1234

(2)4321

(3)CFA0

(4)9D60

实验二汇编程序和连接程序的使用

一、实验目的。

熟悉汇编语言的上机环境,学习EDIT,MASM,LINK程序的使用,掌握建立、汇编、链接、运行汇编语言程序的过程。

二、示例。

试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。上机步骤如下:1、调用 程序建立汇编语言源程序.ASM

建立好的源文件以EX_1.ASM为文件名存盘

DATA SEGMENT

STRING1 DB 'Visual Basic'

STRING2 DB 'Visual Basic'

COUNT EQU $-STRING2

MESS1 DB 'MATCH!',13,10,'$'

MESS2 DB 'NO MATCH!',13,10,'$'

DATA ENDS

code segment

assume cs:code,ds:data,es:data

main proc far

start::

push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

mov es,ax

;main program

mov cx,count

lea si,string1

lea di,string2

cld

repz cmpsb

jz mes1 mov dx,offset mess2 jmp disp0

mes1:mov dx,offset mess1 disp0: mov ah,9

int 21h exit: ret main endp code ends

end start修改字符串,使其不同,并对以上源程序重新汇编、连接、运行,结果输出为:NO MATCH!

修改前:

修改后:

三、实验题。

1、上机完成以上示例程序。

2、完成课堂例题,并用DEBUG运行,观察结果。data segment

X db 6

Y db ?

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data mov ds,ax mov al,x mov y,5

add y,al mov ah,4ch int 21h code ends end start 程序: