循环程序设计实验

1.统计一个字形数组中负数元素个数

.486

DATA SEGMENT

ARRAY DW 54,-1050,-448,0,6800,-853

COUNT EQU $-ARRAY;统计占用的空间

RESULT DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

 

MOV SI,OFFSET ARRAY;指针初始化

MOV CX,COUNT/2;统计数据的个数存入CX

CLD

MOV DX,0

LL: LODSW;取数到AX中

BT AX,15

JNC NEXT;判断是否为负数

INC DX;计数器加1

NEXT: LOOP LL

 

MOV RESULT,DX

MOV AH,4CH

INT 21H

CODE ENDS

END START

2.排序

DATA SEGMENT

BLOCK DB 22H,55H,11H,78H;n取4

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

 

LEA BX,BLOCK;外循环指针初始化

MOV CX,3;外循环计数器初始化

 

LP1: MOV SI,BX;内循环指针初始化

MOV DX,CX;内循环计数器初始化

MOV AL,[SI]

 

LP2: CMP AL,[SI+1]

JGE LP3

XCHG AL,[SI+1]

 

LP3: INC SI;修改内循环指针

DEC DX

JNZ LP2

MOV [BX],AL;存大数

INC BX;修改内循环指针

LOOP LP1

 

MOV AH,4CH

INT 21H

CODE ENDS

END START

3.校验并统计

DATA SEGMENT

STRN DB 'SHDAKDHAKFA$'

COUNT DB ?

DATA ENDS

CODE SEGMENT

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

START:

MOV AX,DATA

MOV DS,AX

MOV ES,AX

 

MOV DL,0

LEA SI,STRN

LL: LODSB;读入一个数,SI后移

CMP AL,'$'

JE EXIT

JP LL

OR AL,80H

MOV [SI-1],AL

INC DL

JMP LL

 

EXIT: MOV COUNT,DL

MOV AH,4CH

INT 21H

CODE ENDS

END START

4.查找

DATA SEGMENT

FIRST DB 12H,44H,65H,3H,0H

N DW ?

DATA ENDS

CODE SEGMENT

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

START:

MOV AX,DATA

MOV DS,AX

MOV ES,AX

 

MOV DX,0;

MOV CX,5

LEA SI,FIRST

 

LL: MOV AL,[SI]

INC SI

CMP AL,0

JE EXIT

INC DX

LOOP LL

 

EXIT: MOV N,DX

MOV AH,4CH

INT 21H

CODE ENDS

END START

posted on 2008-11-05 22:48  光影  阅读(260)  评论(0编辑  收藏  举报

导航