; ------------------------------------
; 有个数组可存 10 个字符串, 每个字符串可存的空间大小相等.
; 但每次存入的字符串个数在 0 <= N <= 9 (N 为最后一个字符串) 变化.
; 0-N 之间可能有空字符串; N-9 之间总是不存字符串, 即为空字符串.
; 我们怎样知道每次存入的这几个字符串 0-N 之间是否存在有空字符串?
; ------------------------------------
; 下面是我的解法. 有没有更好的?
; 注: 双引号内为描述伪指令
"清空字符串数组"
xor ecx, ecx ; 字符串数组 index
mov ebx, 0ffffffffh ; 用低 10 位存数组状态, 空字符串相应位为 0, 反之为 1
.while (ecx < 10)
mov eax, "第 ecx 个字符串的字符数"
.if (eax > 0) ; 如果非空字符串
shl ebx, 1
or ebx, 1 ; 左移补 1
"存字符串"
.else ; 如果空字符串
shl ebx, 1 ; 左移补 0
.endif
inc ecx
.endw
xor ecx, ecx
.while (ecx < 10)
mov ax, bx
or ax, 0fffeh
.if (ax == 0ffffh) ; 如果 ebx 末位是 1
and bx, 0ffffh
.if (bx != 0ffffh)
"设置 0-N 有空字符串标志" ; <== 达到目的
.endif
.break
.else ; 移去 ebx 末位 0
shr ebx, 1
.endif
inc ecx
.endw