. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  【检测点】9.3实验  [待解决] 回复[ 3次 ]   点击[ 613次 ]  
regex
[帖 主]   [ 发表时间:2010-01-18 18:28 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
请大家指点:
code    segment
start:  mov ax,cs
        mov ds,ax
        mov bx,0
s:      mov cl,[bx]
        mov ch,0
        sub cl,0
        jcxz ok
        inc bx
        loop s
ok:     dec cx
        mov dx,bx

        mov ah,4ch
        int 21h

code    ends
end     start

root@yeah /cygdrive/d/asm
$ debug j93.exe
-r
AX=0000  BX=0000  CX=001A  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=13F9  ES=13F9  SS=1409  CS=1409  IP=0000   NV UP EI PL NZ NA PO NC
1409:0000 8CC8          MOV     AX,CS
-t

AX=1409  BX=0000  CX=001A  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=13F9  ES=13F9  SS=1409  CS=1409  IP=0002   NV UP EI PL NZ NA PO NC
1409:0002 8ED8          MOV     DS,AX
-t

AX=1409  BX=0000  CX=001A  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=1409  ES=13F9  SS=1409  CS=1409  IP=0004   NV UP EI PL NZ NA PO NC
1409:0004 BB0000        MOV     BX,0000
-d ds:0 f
1409:0000  8C C8 8E D8 BB 00 00 8A-0F B5 00 80 E9 00 E3 03   ................
-g 16

AX=1409  BX=0005  CX=FFFF  DX=0005  SP=0000  BP=0000  SI=0000  DI=0000
DS=1409  ES=13F9  SS=1409  CS=1409  IP=0016   NV UP EI NG NZ AC PE NC
1409:0016 B44C          MOV     AH,4C
-t

AX=4C09  BX=0005  CX=FFFF  DX=0005  SP=0000  BP=0000  SI=0000  DI=0000
DS=1409  ES=13F9  SS=1409  CS=1409  IP=0018   NV UP EI NG NZ AC PE NC
1409:0018 CD21          INT     21
-r dx
DX 0005
:
csusuntao
[第1楼]   [ 回复时间:2010-01-27 22:17 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:2
注册日期:2010-01-04 23:00
s:      mov cl,[bx] 
        mov ch,0 
        sub cl,0 
        jcxz ok 
        inc bx 
        loop s 
我认为这段应该有问题。sub cl,0不太对,应该是add cl, 1

因为我们要查找的是为0的字节,在loop操作时候会将cx减去1,所以在执行loop之前,我们对cx加1,到loop执行时如果cx-1后cx=0,则退出循环,这样找到我们需要的数据。
ddup
[第2楼]   [ 回复时间:2010-03-30 14:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-03-27 09:11
顶1楼!刚开始总想用JCXZ,我还觉得题目有错呢,现在看来,题目中那个OK标号是故摆迷魂阵呀。
longwenj
[第3楼]   [ 回复时间:2010-04-08 09:36 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2010-03-08 11:21
s:mov cl,[bx]
mov ch,0
inc cx
inc bx
loop s
-------------------------------
我觉得这样还要简单点,当cx的值为0时,INC  CX把CX增加1,再来执行LOOP S时,CX就为0了,于是就自动顺序向下执行,根本就用不了什么jcxz ok 。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved