统计8的个数

5024 2018-06-26 07:38:48
下面这代码我想知道为什么会错,是两个loop s的原因吗?能不能使用两个loop s这样循环 ,是不是我没有用栈保存cx的值导致的原因?求解。
assume cs:code,ds:data
data segment
db 8,11,8,1,8,5,63,38
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
mov dx,0
mov cx,8
s:
cmp byte ptr [bx],8
je next
inc bx
loop s
next:
inc dx
inc bx
loop s
mov ah,4ch
int 21h
code ends
end start
...全文
177 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2018-06-27
  • 打赏
  • 举报
回复
不是两个 loop不行,而是执行流程上不对,loop 之后判断过程就结束了,当然要跳过另外个情形的后续指令转到结束程序的代码上。
5024 2018-06-27
  • 打赏
  • 举报
回复
我改正了,上述。确实两个loop s 是不行的 但我只是想知道 为什么不能2个loop s
5024 2018-06-27
  • 打赏
  • 举报
回复
assume cs:code,ds:data
data segment
db 8,11,8,1,8,5,63,38
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
mov dx,0
mov cx,8
s:
cmp byte ptr [bx],8
je next
jmp short tt
next:
inc dx
tt:
inc bx
loop s
mov ah,4ch
int 21h
code ends
end start
zara 2018-06-26
  • 打赏
  • 举报
回复
第一个loop后接着运行第二个loop啊,这显然不对吧,应该加个jmp指令到第二个loop的后面吧。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧