汇编实验2

更新时间:2023-11-25 02:02:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

姓名 班级 学号:

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

一、实验目的

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从键盘输入。 三、实验设备 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

姓名 班级 学号:

MOV AH,02H INT 21H MOV DL,'='

INT 21H;会运行一段小程序,使AX的值改变 AND AX,0000H MOV AL,10 SUB AL,BUF MOV DL,AL MUL BL MOV BL,10 DIV BL MOV DL,AL MOV DH,AH OR DL,30H MOV AH,02H INT 21H MOV DL,DH OR DL,30H MOV AH,02H INT 21H MOV DL,' ' INT 21H MOV CL,BUF+1 LOOP L2

姓名 班级 学号:

MOV DL,0AH INT 21H MOV CL,BUF LOOP L1 MOV AH,4CH INT 21H CODE ENDS END START 运行结果:

实验2-4 源程序: data segment M DB 20H LS DB 00H LP DB 00H 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 AL,03H MOV AH,00H INT 10H MOV CX,5 L1:MOV LP,CL MOV BX,6H SUB BX,CX MOV LS,BL MOV BH,00H MOV DH,LS MOV AL,M AND AH,00H SUB AL,LS MOV DL,AL MOV AH,02H INT 10H MOV AL,LS

姓名 班级 学号:

AND AH,00H MOV BX,2 MOV AL,LS MUL BL SUB AL,1 MOV LS,AL MOV AH,9H MOV AL,'*' MOV BH,0 MOV BL,0DH MOV CL,LS AND CH,00H INT 10H MOV CL,LP AND CH,00H LOOP L1 MOV AH,4CH INT 21H CODE ENDS END START 运行结果:

姓名 班级 学号:

实验2-5 源程序:

STACK SEGMENT STACK DW 100H DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK START:MOV AH,01H INT 21H AND BX,0000H SUB AL,30H MOV BL,AL MOV AH,01H INT 21H SUB AL,30H AND CX,0000H MOV CL,AL MOV AX,01H

姓名 班级 学号:

AND DX,0000H CALL M PUSH AX MOV BX,DX CALL SHOW POP AX MOV BX,AX CALL SHOW MOV AH,4CH INT 21H M PROC SUB CX,1H JBE L CALL M L:PUSH DX MUL BX MOV CX,AX POP AX PUSH DX MUL BX POP DX ADD DX,AX MOV AX,CX RET

姓名 班级 学号:

M ENDP SHOW PROC MOV CX,4 L2:PUSH CX MOV CL,4 ROL BX,CL MOV DL,BL AND DL,0FH CMP DL,0AH JB L3 ADD DL,07H L3:ADD DL,30H MOV AH,02H INT 21H POP CX LOOP L2 RET SHOW ENDP CODE ENDS END START 运行结果:

实验2-6 源程序:

姓名 班级 学号:

STACK SEGMENT STACK DW 100H DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK START:MOV AH,01H INT 21H AND BX,0000H SUB AL,30H MOV BL,AL MOV AH,01H INT 21H SUB AL,30H AND CX,0000H MOV CL,AL MOV AX,01H AND DX,0000H CALL M PUSH AX MOV BX,DX CALL SHOW POP AX MOV BX,AX

姓名 班级 学号:

CALL SHOW MOV AH,4CH INT 21H M PROC SUB CX,1H JBE L CALL M L:PUSH DX MUL BX MOV CX,AX POP AX PUSH DX MUL BX POP DX ADD DX,AX MOV AX,CX RET M ENDP SHOW PROC MOV CX,4 L2:PUSH CX MOV CL,4 ROL BX,CL MOV DL,BL

姓名 班级 学号:

AND DL,0FH CMP DL,0AH JB L3 ADD DL,07H L3:ADD DL,30H MOV AH,02H INT 21H POP CX LOOP L2 RET SHOW ENDP CODE ENDS END START 运行结果:

本文来源:https://www.bwwdw.com/article/tw0t.html

Top