您好,欢迎来到百家汽车网。
搜索
您的当前位置:首页汇编语言-实验二 循环与子程序程序设计

汇编语言-实验二 循环与子程序程序设计

来源:百家汽车网
实验二 循环与子程序程序设计

一、 实验目的

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)编写一个递归子程序,计算指数函数Xn的值,其中X,n从键盘输入。

三、 源程序

EXAM2-1

DATA SEGMENT

BUF DB’S=1+2×3+3×4+4×5+…+N(N+1)+…=’,’$’ RES DW 4 DUP(0),’$’ DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS, AX

MOV DX, OFFSET BUF MOV AH, 09H

INT 21H

MOV DX, 1

MOV BL, 2

NEXT: MOV AL, BL INC BL MUL BL

ADD DX, AX CMP AX, 200 JNA NEXT

MOV CX, 0004H

MOV DI, OFFSET RES ADD DI, 03H NEXT1:MOV AX, DX AND AX, 000FH CMP AL, 0AH JB NEXT2 ADD AL, 07 NEXT2:ADD AL, 30H MOV [DI],AL DEC DI PUSH CX

MOV CL,04 SHR DX,CL POP CX

LOOP NEXT1

MOV DX, OFFSET RES MOV AH, 09H INT 21H

MOV AH, 4CH INT 21H CODE ENDS

END START

执行程序EXAM2-1·EXE,屏幕上显示结果: S=1+2×3+3×4+4×5+…+N(N+1)+…=045F

EXAM2-2

ORG 2000H 2000 BF0030 MOV DI, 3000 2003 B1 MOV CL,

2005 C60500 MOV BYTE PTR[DI],0 2008 47 INC DI 2009 FEC9 DEC CL 200B 75F8 JNZ 2005 200D F4 HLT

EXAM2-3

DATA SEGMENT

ATAD DB ?, 2AH, ?, 3DH, ?, ?, 20H, '$'

ATAD1 DB ?, 2AH, ?, 3DH, ?, ?, 0DH, 0AH, '$' DATA ENDS

STACK SEGMENT STACK DB 20H DUP(0) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA START:

MOV AX, DATA MOV DS, AX MOV CL, 09H MOV BL, 00H OKL:

MOV AL, 00H INC BL OK1:

INC AL PUSH AX CMP BL, AL JZ OK

MOV BH, AL MUL BL

MOV DI, OFFSET ATAD CALL OKP POP AX JMP OK1 OK:

MOV BH, AL MUL BL

MOV DI, OFFSET ATAD1 CALL OKP POP AX LOOP OKL MOV AH, 4CH INT 21H OKP PROC PUSH AX PUSH BX

PUSH CX

ADD BX, 3030H MOV [DI], BH

MOV [DI + 02H], BL MOV CX, 0AH MOV DH, 00H OKL2:

CMP AX, CX JS OK2

ADD CX, 0AH INC DH JMP OKL2 OK2:

SUB CX, 0AH SUB AX, CX MOV AH, DH ADD AX, 3030H MOV [DI + 04H], AH MOV [DI + 05H], AL MOV DX, DI MOV AH, 09H INT 21H POP CX POP BX POP AX RET OKP ENDP CODE ENDS END START

执行程序EXAM2-2·EXE,屏幕上显示结果: 1*1=01

1*2=02 2*2=04

1*3=03 2*3=06 3*3=09

1*4=04 2*4=08 3*4=12 4*4=16

1*5=05 2*5=10 3*5=15 4*5=20 5*5=25

1*6=06 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7=07 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8=08 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=

1*9=09 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

EXAM2-4

CODES SEGMENT ASSUME CS:CODES START:

XOR BX,BX MOV DL,2AH MOV CX,9

LOP: PUSH CX INC BL MOV CL,BL MOV DL,2AH LOP2: MOV AH,02H INT 21H LOOP LOP2 POP CX

MOV DL,0AH MOV AH,02H INT 21H

MOV DL,0DH MOV AH,02H INT 21H CMP BL,9 JZ ENDPRO LOOP LOP ENDPRO:

MOV AH,4CH INT 21H CODES ENDS

END START

执行程序EXAM2-4·EXE,屏幕上显示结果: * ** *** **** ***** ****** ******* ******** *********

EXAM2-5

STACK SEGMENT STACK DB 1024 DUP(0) STACK ENDS DATA SEGMENT

BUF DW 0F101H,110DH,52H,100H,456H COUNT =($-BUF)/2

RESULT DW 4 DUP(?),'$' DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK WDADD PROC PUSH DI MOV AX, 0 MOV DX, 0

MOV DI, OFFSET BUF NEXT2: ADD AX, [DI] JNC NEXT1 INC DX

NEXT1: ADD DI, 2 LOOP NEXT2 POP DI RET

WDADD ENDP SHOW PROC PUSH CX PUSH DI

MOV CX, 04H

MOV DI, OFFSET RESULT MOV BX, AX ADD DI, 07H

BBB: MOV AX, BX AND AX, 000FH CMP AL, 0AH JB QQQ

ADD AL, 07H

QQQ: ADD AL, 30H MOV [DI], AL DEC DI PUSH CX

MOV CL, 04 SHR BX, CL POP CX LOOP BBB

MOV CX, 0004H CCC: MOV AX, DX AND AX, 000FH CMP AL, 0AH JB DDD

ADD AL, 07H

DDD: ADD AL, 30H MOV [DI], AL DEC DI

PUSH CX

MOV CL, 04H SHR DX, CL POP CX LOOP CCC POP DI POP CX RET

SHOW ENDP

BEGIN: MOV AX, DATA MOV DS, AX MOV CX, COUNT CALL WDADD CALL SHOW

MOV DX, OFFSET RESULT MOV AH, 09H INT 21H

MOV AH, 4CH INT 21H CODE ENDS END BEGIN

执行程序EXAM2-5·EXE,屏幕上显示结果: 000107B6

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baijiahaobaidu.com 版权所有 湘ICP备2023023988号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务