汇编实验报告
? ——循环结构设计
实验1
编写程序,完成在屏幕上显示“九九表”的功能
流程图:
代码:
SSEG SEGMENT STACK
STK DB 20 DUP(0)
SSEG ENDS
DSEG SEGMENT
COU DB ?
DSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS: DSEG
ASSUME SS: SSEG
START: MOV AX , DSEG
MOV DS , AX
MOV AX , SSEG
MOV SS , AX
MOV SP , SIZE STK
XOR AX , AX
XOR BX , BX
XOR CX , CX
XOR DX , DX
MOV CL , 01H
LOPO: MOV AL , 01H
AGAIN: MOV BL , AL
MOV COU , AL
ADD BL , 30H
MOV DL , BL
MOV AH , 02H
INT 21H
MOV DL , '*'
MOV AH , 02H
INT 21H
MOV BL , CL
ADD BL , 30H
MOV DL , BL
MOV AH , 02H
INT 21H
MOV DL , '='
MOV AH , 02H
INT 21H
MOV AL , COU
MUL CL
AAM
ADD AX , 3030H
MOV BX , AX
MOV DL , BH
MOV AH , 02H
INT 21H
MOV DL , BL
MOV AH , 02H
INT 21H
MOV AL , COU
CMP AL , CL
JNB CONTINUE
MOV DL , 20H
MOV AH , 02H
INT 21H
MOV AL ,COU
INC AL
JMP AGAIN
CONTINUE: CMP CL , 09H
JNB OVER
INC CL
MOV DL , 0AH
MOV AH , 02H
INT 21H
MOV DL , 0DH
MOV AH , 02H
INT 21H
JMP LOPO
OVER: MOV AH , 4CH
INT 21H
CSEG ENDS
END START
运行结果:
实验2
编写程序,将指定内存中存放的20个带符号的字节数据,分成正数和负数两个数组,分别求这两个数组的数据个数,结果存放在指定的存储单元,存放格式为:正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。
流程图:
代码:
DSEG SEGMENT
DATA DB 0,2,3,4,5,6,7,8,9,10,0,-2,-3,-4,-5,-6,-7,-8,-9,-10
POSITIVE DB 0,20 DUP(0)
NEGATIVE DB 0,20 DUP(0)
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
XOR AX,AX
XOR CX,CX
XOR DX,DX
LEA SI,DATA
LOOP1: INC AH
CMP AH,20
JG DONE
MOV AL,[SI]
CMP AL,0
JZ ZERO
JL NEGA
INC CX
LEA DI,POSITIVE
ADD DI,CX
MOV [DI],AL
INC SI
JMP LOOP1
NEGA: INC DX
LEA DI,NEGATIVE
ADD DI,DX
MOV [DI],AL
INC SI
JMP LOOP1
ZERO: INC SI
JMP LOOP1
DONE: LEA DI,POSITIVE
MOV [DI],CL
LEA DI,NEGATIVE
MOV [DI],DL
MOV AH,4CH
INT 21H
CSEG ENDS
END START
运行结果:
调试过程:
在DEBUG下先用G命令连续执行到程序末尾,再用D命令查看内存单元,判断结果是否正确。若出错,则在命令行下利用DEBUG程序单步执行程序,不断重复,并判断每次跳转是否正确,直到执行到程序末尾,查看内存单元,判断是否正确。若还是出现错误,则修改后再重复以上步骤,直到对于任意20个带符号数数,都可以正确分类为止。
评论0