📄 程序6.txt
字号:
程序6: 功能:将内存中由SOURCE指示的个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数 组的数据个数,结果存放在RESULT指示的内存区域。存放形式为正数个数在前,其后跟正数组元素,然后是负数个数及负数数组元素。
例如:
内存中有 1EH,91H,74H,91H,42H,30H,81H,F3H,18H,25H
结果为 06H,1EH,74H,42H,30H,18H,25H,04H,91H,91H,81H,F3H
DATA SEGMENT
SOURCE DB 1EH,91H,74H,91H,42H,30H,81H,0F3H,18H,25H
COUNT EQU $-SOURCE
CNT EQU COUNT+1 ;CNT是一个常量,后面要用
RESULT DB COUNT+2 DUP (?)
DATA ENDS
;----------------------------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
START: MOV SI,OFFSET SOURCE
MOV DI,OFFSET RESULT
MOV CX,COUNT
MOV DL,0 ;正数计数器
MOV DH,0 ;负数计数器
MOV BX,OFFSET RESULT+CNT ;(此处用到了CNT)将指针知道RESULT最后
REPEAT: MOV AL,[SI] ;取数比较
CMP AL,0
JG LOP
INC DH ;小于零,DH加1
MOV [BX],AL ;负数从后往前存放
DEC BX
JMP DONE
LOP : INC DL ;正数DL加1
MOV [DI+1],AL ;正数从前往后存放
INC DI
DONE: INC SI
LOOP REPEAT
MOV [BX],DH
MOV DI,OFFSET RESULT
MOV [DI],DL
RET
MAIN ENDP
CODE ENDS
END MAIN
说明:1.此程序已调试通过
2.本程序的思路为:正数从前(RESULT的第2的单元)往后存放,负数从后往前存放,所以本体的结果如下:
RESULT: 06H,1EH,74H,42H,30H,18H,25H,04H,F3H,81H,91H,91H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -