汇编实验2讲解

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

实验二循环与子程序程序设计

一、实验目的

1) 加深对循环结构的理解。

2)掌握循环程序的设计方法。

3)学习子程序的定义和调用方法。

4)掌握子程序、子程序的嵌套、递归子程序的结构。

5) 掌握子程序设计、编制及调试。

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

二、实验内容

1) 编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。

2)将从3000H内存单元开始的100个字节存储单元全部清0。

3)编制在屏幕上显示九九乘法表的程序。

4)编制在屏幕上显示用*组成的三角形的程序。

5)设有五个字数据存放在以BUF为首地址的内存单元中,要求采用调用多个字数据相加的子程序方法编程,和的低位字放在RESULT单元,和的高位字放在RESULT+2单元,并将结果显示在屏幕上。

6)编写一个递归子程序,计算指数函数X n的值,其中X,n从键盘输入。

三、实验设备

PC机一台

四、实验步骤

1) 按程序流程图编制实验程序。

2) 输入源程序。

3) 汇编、连接程序,执行程序,检查结果。

4)对内存单元3000H开始的100个存储单元用E命令输入任意数。

5) 程序的执行可用DEBUG的G命令,也可用T命令单步跟踪执行。

6) 用D命令检查执行结果。

五、实验报告的要求

1)列出源程序。

2)对程序中用到的寄存器说明其功能。

3)总结计数控制循环程序的设计方法。

4) 说明怎样使用DEBUG进行程序调试的。调试过程中所遇到的问题是如何解决的。

实验2-1

源程序:

DATA SEGMENT

BUF DB '1+2*3+3*4+4*5+...+N(N+1)=$'

DATA ENDS

STACK1 SEGMENT PARA STACK

DW 20H DUP(0)

STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK1,ES:DATA

START:

MOV AX,DATA

MOV DS,AX

MOV DX,01H

MOV BX,01H

L1:INC BX

MOV AX,BX

INC AX

MUL BL;(进行乘法运算,bl作为乘数)

ADD DX,AX;(DX作为累加变量)

CMP AX,200;N(N+1)是否大于200

JBE L1

MOV BX,DX

LEA DX,BUF

MOV AH,09H

INT 21H;输出字符串

MOV CX,4

LOP:MOV AX,4

MOV DX,BX

MUL CL

SUB AX,4

MOV AH,AL

MOV AL,CL

MOV CL,AH;

SHR DX,CL;cl作为移位位数寄存器

AND DX,0FH

CMP DX,0AH

JBE L2

ADD DX,7H

L2:ADD DX,30H

MOV CL,AL;

MOV AH,02H

INT 21H

LOOP LOP;输出数据

MOV AH,4CH

INT 21H

CODE ENDS

END START

运行结果:

实验2-2

源程序:

stack1 segment para stack

dw 20h dup(0)

stack1 ends

code segment

assume cs:code,ss:stack1 start:

mov ax,300h

mov ds,ax

mov cx,100;cx作为循环变量lop:mov bx,cx ;bx作为地址偏移mov al,0h ;al为0,目的是清零

mov -1[bx],al

loop lop

mov ah,4ch

int 21h

code ends

end start

运行结果:

实验2-3

源程序:

data segment

BUF DB 09H,09H

data ends

stack1 segment para stack

dw 20h dup(0)

stack1 ends

CODE SEGMENT

assume cs:code,ds:data,ss:stack1,es:data START:

MOV AX,DATA

MOV DS,AX

AND CX,0000H

MOV CL,09H;;cl作为循环变量

L1:MOV BUF,CL

MOV CL,09H

L2:MOV BUF+1,CL

MOV AL,10

SUB AL,BUF

MOV DL,AL

OR DL,30H

MOV AH,02H

INT 21H

MOV DL,'*'

MOV AH,02H

INT 21H

MOV BL,10

SUB BL,BUF+1

MOV DL,BL

OR DL,30H

相关文档
最新文档