. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  【检测点】9.2实验  [待解决] 回复[ 9次 ]   点击[ 862次 ]  
regex
[帖 主]   [ 发表时间:2010-01-18 15:39 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
1 assume  cs:code
  2 code    segment
  3 start:  mov ax,cs    ;我用的是cs里面的数据实验的
  4         mov ds,ax
  5         mov bx,0
  6
  7 s:      mov cx,[bx]  ;将[bx]送入cx
  8         sub cx,0     ;用0与cx相减
  9         jcxz ok      ;如果cx=0,则执行标号ok出指令, 否则, 向下继续。。。
 10         inc bx
 11         jmp short s
 12
 13 ok:     mov dx,bx
 14
 15         mov ax,4c00h
 16         int 21h
 17
 18 code    ends
 19 end     start

【实验结果】
d:\asm>debug j92.exe
-r
AX=0000  BX=0000  CX=0018  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=14C9  ES=14C9  SS=14D9  CS=14D9  IP=0000   NV UP EI PL NZ NA PO NC
14D9:0000 8CC8          MOV     AX,CS
-t

AX=14D9  BX=0000  CX=0018  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=14C9  ES=14C9  SS=14D9  CS=14D9  IP=0002   NV UP EI PL NZ NA PO NC
14D9:0002 8ED8          MOV     DS,AX
-t

AX=14D9  BX=0000  CX=0018  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=14D9  ES=14C9  SS=14D9  CS=14D9  IP=0004   NV UP EI PL NZ NA PO NC
14D9:0004 BB0000        MOV     BX,0000
-d ds:0 f
14D9:0000  8C C8 8E D8 BB 00 00 8B-0F 83 E9 00 E3 03 43 EB   ..............C.
-g 13

AX=14D9  BX=0005  CX=0000  DX=0005  SP=0000  BP=0000  SI=0000  DI=0000
DS=14D9  ES=14C9  SS=14D9  CS=14D9  IP=0013   NV UP EI PL ZR NA PE NC
14D9:0013 B8004C        MOV     AX,4C00
-t

AX=4C00  BX=0005  CX=0000  DX=0005  SP=0000  BP=0000  SI=0000  DI=0000
DS=14D9  ES=14C9  SS=14D9  CS=14D9  IP=0016   NV UP EI PL ZR NA PE NC
14D9:0016 CD21          INT     21
-p

Program terminated normally
-d ds:0 f
14D9:0000  8C C8 8E D8 BB 00 00 8B-0F 83 E9 00 E3 03 43 EB   ..............C.
-r dx
DX 0005
:
regex
[第1楼]   [ 回复时间:2010-01-18 15:44 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
感觉jcxz与loop类似, 都是检测cx中的值,
jcxz检测的是cx是否为零
loop对cx做递减操作,直至cx为零。
jcxz和jmp 配合, 要比单纯的loop循环, 有力多啦。
csusuntao
[第2楼]   [ 回复时间:2010-01-27 21:45 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:2
注册日期:2010-01-04 23:00
7 s:      mov cx,[bx]  ;将[bx]送入cx 
  8         sub cx,0     ;用0与cx相减 


请问楼主的这两条语句中sub cx, 0有什么用啊》
csusuntao
[第3楼]   [ 回复时间:2010-01-27 22:14 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:2
注册日期:2010-01-04 23:00
我的解决方法,请指导。

assume cs:code

code segment

start:
    mov ax, 2000H
    mov ds, ax
    mov bx, 0
    
    S:
        mov ch, 0
        mov cl, [bx] ;我们操作的是字节,只能赋值到cl,且ch要清空
        jcxz OK
        add bx, 1
        jmp short S
    
    OK:
        mov dx, bx
    
    mov ax, 4C00H
    int 21H
    
code ends

end start
xhz520
[第4楼]   [ 回复时间:2010-01-28 12:48 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-21 15:36
assume cs:code

code segment
start:        mov ax,2000h
        mov ds,ax
        mov bx,0
        
s:        mov cx,0        ;cx置0
        or ch,ds:[bx]        ;因为是字节操作,就用ch进行与运算,DS:[BX]为0的话ch就为0
        jcxz ok
        inc bx
        jmp short s

ok:        mov dx,bx

        mov ax,4c00h
        int 21h

code ends
end start
flong158
[第5楼]   [ 回复时间:2010-05-13 01:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-08 00:59
mov cx,[bx]
mov ch,0
jcxz ok
inc bx
chever19
[第6楼]   [ 回复时间:2010-07-17 21:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-12 14:54
我忘了我们操作的是字节!!
imandry
[第7楼]   [ 回复时间:2010-07-18 00:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-07-13 10:33
cx寄存器可以拆成ch和cl用的?
从来都没拆过的说
imandry
[第8楼]   [ 回复时间:2010-07-18 00:48 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-07-13 10:33
好吧~我又错了……
这大晚上的……
ljfrog
[第9楼]   [ 回复时间:2010-10-25 17:01 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-10 08:28
对哦,是字节的。。。悲剧啊。3楼,顶!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved