这个可以简化些
程序代码:
DATAS SEGMENT
a dw 1,4,4,6
Len equ ($ - a) /2 ;长度
b dw 2,3,5,6
m dw 4 dup(?)
result db 2,0,1 ;代表 =,<,> (等于,少于,大于)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
mov cx,Len ;取长度
mov bx,0 ;初始化
next: mov si,0 ;初始化
mov ax,a[bx] ;取第1值
cmp ax,b[bx] ;比较第2值
jz @f ;等于跳,si=0
mov si,1
jb @f ;少于跳,si=1
mov si,2 ;大于,si=2
@@: mov al,result[si] ;以si取相应的置值(2,0,1)
mov byte ptr m[bx],al ;置入结果
add bx,2 ;下一个
loop next ;回圈
MOV AH,4CH
INT 21H
CODES ENDS
END START
将2,0,1等'置值'抽离放在data区是因为若将来这些值有任何改变,只要更改data区的资料就是,
不必更动程式.
[此贴子已经被作者于2020-4-30 07:54编辑过]