参考程序及注释,流程图自己画下data segment ;数据区 len db 10 ;长度,可以调整 ,设数据为字节 dat db 1,-3,22,33,-10,25,-7,18,-88,111 datr db 0data endsstacks segment stack 'stack' ;栈区 dw 128 dup(0)stacks endscode segment ;代码区 assume cs:code,ds:data,ss:stacksstart: mov ax, data mov ds, ax ;设置数据段寄存器 mov si,offset len xor cx,cx ; 清循环计数 mov cl,[si] ;得到数据长度 xor bx,bx ; 计数清0 inc si ;将SI指向数据区loopa: mov al,[si] ;取数据 test al ,80H ;判最高位 jns down ;正数,跳过 inc bldown: inc si; 下一个数据 loop loopa ;循环 mov [si],bl; 存储结果 mov ax, 4c00h ;退出程序,回系统 int 21h code endsend start ;程序入口