在内存的3000h开始存放了一组数(16个)。将其处理后存放到3010h开始的16个单元中,处理的规则是:正数不变,负数取反加1
您好,根据您的需求,给您一段代码。
如下所示,将从内存的3000h开始的16个数字进行处理,并将结果存储在3010h开始的16个单元中。正数保持不变,负数取反并加1。
ORG 100h
MOV SI, 3000h ; 源数组的起始地址
MOV DI, 3010h ; 目标数组的起始地址
MOV CX, 16 ; 数组长度
Process:
MOV AL, [SI] ; 从源数组中读取一个字节
CMP AL, 0 ; 检查该字节的符号
JNS Positive ; 正数跳转到 Positive 标签
; 处理负数
NEG AL ; 取反
ADD AL, 1 ; 加1
JMP Continue
Positive:
; 处理正数
; 正数不变,直接存储到目标数组
JMP Continue
Continue:
MOV [DI], AL ; 存储处理后的字节到目标数组
INC SI ; 源数组指针增加
INC DI ; 目标数组指针增加
LOOP Process ; 循环处理下一个字节
HLT ; 程序结束
END