实验二 循环程序设计
实验目的:
1.掌握循环结构程序设计方法
2.掌握循环结构程序调试方法
实验步骤:
1.编辑
利用编辑器(记事本,也可采用其它编辑器)建立一个名为ASM2.ASM的文本文件,内容如下:
DATAS SEGMENT
STRING DB 11,-2,3,-4,5,-6,7,9,-8,8,7,-3,2,-1,9
COUNT EQU $-STRING
STRING1 DB 20 DUP(?)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA SI,STRING
LEA DI,STRING1
llp:
mov AL,[SI]
test AL,80H
JZ ZHENGSHU
INC SI
LOOP llp
ZHENGSHU: MOV [DI],AL
INC SI
INC DI
JMP llp
CODES ENDS
END START
;该程序能实现选出正数功能,缺点是不知何时结束该查看d ds:0000
2.复制
要求将first行中的非负数复制到second行,画出流程图并编写程序。
利用DEBUG调试正确。
3.排序
要求将second行中的数据按升序重新排列,画出流程图并编写程序。
利用DEBUG调试正确。
DATAS SEGMENT
;此处输入数据段代码
BUF DB 6,4,2,87,0,3,1,8,5,9
COUNT EQU $-BUF
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV DX,COUNT-1
SORT1: MOV BL,0
MOV SI,OFFSET BUF
MOV CX,DX
SORT2: MOV AL,[SI]
CMP AL,[SI+1]
;JNA NOXHG
JNB NOXHG
XCHG AL,[SI+1]
XCHG AL,[SI]
MOV BL,0FFH
NOXHG: INC SI
LOOP SORT2
DEC DX
CMP BL,0
JNE SORT1
MOV AH,4CH
INT 21H
CODES ENDS
END START
预习:
1. 学习DEBUG命令。
2. 按要求编写程序。
实验报告要求:
1. 根据步骤2和步骤3中的要求,画出流程图、写出源程序。
2. 记录调试的操作及其结果。
3. 回答以下问题:
利用DEBUG命令连续、单步、带断点运行程序,在步骤2和步骤3的调试中各有什么优缺点。