求: 汇编语言 编程考试的一道题!

例:请定义一个双字量、含十个元素的数组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
展开
 我来答
yanghac
2011-07-09 · TA获得超过679个赞
知道答主
回答量:97
采纳率:0%
帮助的人:127万
展开全部
把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
追问
你用的什么汇编软件?我刚才试了一下,正确了!但是,,呵呵,你能不能重新汇编一个和我的思路不同的程序?非常感谢!!!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式