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