求: 汇编语言 编程考试的一道题!
例:请定义一个双字量、含十个元素的数组array,把数组中>=10的数的个数存入字量count中,并在屏幕上显示?鄙人编了一点,可惜不怎么正确:.modelsmall.3...
例:请定义一个双字量、含十个元素的数组array ,把数组中>=10的数的个数存入字量count中,并在屏幕上显示?
鄙人编了一点,可惜不怎么正确:
.model small
.386
.stack
.data
array dd 5,6,7,8,9,10,11,12,13,14
count dd 0
.code
.startup
mov ecx, 10
mov ebx,0
again: mov eax,array[ebx*4]
cmp eax,10
jnl one
add ebx,1
loop again
jmp done
one: add count ,1
add ebx,1
loop again
done: mov edx,count
mov ah,9
int 21h
.exit
end 展开
鄙人编了一点,可惜不怎么正确:
.model small
.386
.stack
.data
array dd 5,6,7,8,9,10,11,12,13,14
count dd 0
.code
.startup
mov ecx, 10
mov ebx,0
again: mov eax,array[ebx*4]
cmp eax,10
jnl one
add ebx,1
loop again
jmp done
one: add count ,1
add ebx,1
loop again
done: mov edx,count
mov ah,9
int 21h
.exit
end 展开
1个回答
展开全部
把count dd 0改成 count dd 0,'$'
再把标号done这里的mov edx,count
改成下面这两句
done: or count,30h
mov edx,offset count
这样就可以正常了
中断21H的9号功能是在标准输出上显示字符,接收ds:dx偏移地址以$为结束标志的字符串,
而你是把结果给了EDX,正确的做法要把要显示的字符串偏移送到EDX.
能显示的只有ASCII,所以用or count,30H转换成ACSII
再把标号done这里的mov edx,count
改成下面这两句
done: or count,30h
mov edx,offset count
这样就可以正常了
中断21H的9号功能是在标准输出上显示字符,接收ds:dx偏移地址以$为结束标志的字符串,
而你是把结果给了EDX,正确的做法要把要显示的字符串偏移送到EDX.
能显示的只有ASCII,所以用or count,30H转换成ACSII
追问
你用的什么汇编软件?我刚才试了一下,正确了!但是,,呵呵,你能不能重新汇编一个和我的思路不同的程序?非常感谢!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询