第一个大题参考代码
DATA SEGMENT
      ; 定义一个名为 ARR 的字节数组,包含20个有符号整数
      ARR    DB  1, -2, 3, 4, -5, 6, -7, 8, -9, 10
             DB  -11, -12, 13, -14, 15, -16, 17, -18, 19, -20
    
      ; 定义一个名为 ArrayP 的字节数组,用于存放正数,预留20个字节的空间
      ArrayP DB  20 DUP(?)
      ; 定义一个名为 ArrayN 的字节数组,用于存放负数,预留20个字节的空间
      ArrayN DB  20 DUP(?)
      CNT    EQU 20
DATA ENDS
CODE SEGMENT
             ASSUME CS:CODE, DS:DATA
      START: 
      ; --- 初始化段寄存器 ---
             MOV    AX, DATA               ; 将数据段的地址放入 AX
             MOV    DS, AX                 ; 设置数据段寄存器 (DS)
      ; --- 初始化指针和计数器 ---
             MOV    BX, OFFSET ARR         ; 将 ARR 的偏移地址(起始地址)放入 BX,作为源操作数指针
             MOV    SI, OFFSET ArrayP      ; 将 ArrayP 的偏移地址(起始地址)放入 SI,作为目的指针
             MOV    DI, OFFSET ArrayN      ; 将 ArrayN 的偏移地址(起始地址)放入 DI,作为目的指针
             MOV    CX, CNT                ; 将循环次数设置为 20,因为数组有20个元素
      LOP:   
      ; --- 循环体 ---
             MOV    AL, [BX]               ; 从源数组 ARR(BX指向的位置)取一个字节到 AL 寄存器
             CMP    AL, 0                  ; 比较 AL 中的数值和 0
             JLE    BELOW                  ; 如果 AL 小于或等于 0 (Jump if Less or Equal),则跳转到 BELOW 标签
                                                                                
      ; --- 如果是正数 ---
             MOV    [SI], AL               ; 将 AL 中的正数存入目标数组 ArrayP(SI指向的位置)
             INC    SI                     ; 将目的指针 SI 向后移动一个字节,为下一个负数做准备
             JMP    COMMON                 ;跳到共同的递增部分
      BELOW: 
             MOV    [DI],AL
             INC    DI
      ; --- 无论正负,都执行 ---
      COMMON:
             INC    BX
             LOOP   LOP
      EXIT:  
      ; --- 输出两个数组中数据的个数 ---
             SUB    SI,OFFSET ArrayP
             MOV    DL,SI
             ADD    DL,30H                 ;加上'0'的ASCI码
             MOV    AX,0200H               ;功能号02,用于输出单个字符不用MOV AH,02是因为AL前面存了值,需要覆盖为0
             INT    21H
             SUB    DI,OFFSET ArrayN
             MOV    DL,DI
             ADD    DL,30H                 ;加上'0'的ASCI码
             MOV    AX,0200H
             INT    21H
      ; --- 程序结束 ---
             MOV    AH, 4CH                ; DOS 功能调用,准备退出程序
             INT    21H                    ; 执行中断,返回操作系统
CODE ENDS
      END START                  ; 指定程序入口点为 START