题目(1):补全下面的程序,统计f000:0处32个字节中,大小在[32,128]的数据的个数。
分析:通过两次比较,可以得到结果。第一次先看此数据是否大于等于32,如果是否,则进行下一次循环;如果是则继续比较此数据是否小于等于128,如果是则把用于存储统计结果的寄存器的值加1;如果是否,则进行下一次循环。
源代码:
mov bx,0
mov dx,0
mov cx,32
do:cmp byte ptr ds:[bx],32
jb next;如果比较的结果是小于32则跳转到next处
cmp byte ptr ds:[bx],128
ja next;如果比较的结果是大于128则跳转到next处
inc dx
next:
inc bx
loop do
mov ax,4c00h
int 21
codesg ends
end start
题目(2):补全下面的程序,统计f000:0处32个字节中,大小在(32,128)的数据的个数。
分析:乍一看,两个题目是一样的,其实不一样,题目(1)要求的范围是[32,128]。而本题的范围是(32,128)。通过两次比较,可以得到结果。第一次先看此数据是否大于32,注意没有等于,如果是否,则进行下一次循环;如果是则继续比较此数据是否小于128,如果是则把用于存储统计结果的寄存器的值加1;如果是否,则进行下一次循环。
mov bx,0
mov dx,0
mov cx,32
do:cmp byte ptr ds:[bx],32
jna next
cmp byte ptr ds:[bx],128
jnb next
inc dx
next:
inc bx
loop do
mov ax,4c00h
int 21
codesg ends
end start