. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验 9. 3      ■■■                   用loo指令查找内存2000H段中第一个值为0的字节,找到后存储在dx中        ■  ■■■■详细解答  [待解决] 回复[ 4次 ]   点击[ 378次 ]  
stop1204
[帖 主]   [ 发表时间:2013-05-15 23:15 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
补全,用loop指令查找内存2000H段中第一个值为0的字节,找到后存储在dx中
assume cs:code
code segment
start:        mov ax,2000h
        mov ds,ax
        mov bx,0
s:        mov cl,[bx]   
        mov ch,0
        (add cx,cx)   ;或 inc cx
        inc bx
        loop s
ok:        dec bx                ;dec 指令的功能和inc 相反,dec bx进行的操作为;(bx)=(bx)-1
        mov dx,bx
        mov ax,4c00h
        int 21h
code ends
end start


分析:
■正确情况 如: inc cx  (假设bx=1)
cl = 0  ch = 0 bx = 1
inc cx(cx=cx+1  cx=1) → inc bx(bx=2) → loop s(cx-1=0) → 不执行跳转,执行 dec bx (bx=1)
→ dx=bx (dx=1)  

 ■ 正确的情况[ add cx,cx ] , 执行过程自己对照上面, (假设bx=1)
当 cl =0 时, ch=0  
add cx,cx  cx=0     则  bx= bx+1  那么bx=2
loop s , 因为cx=0所以无跳转,执行 dec bx     bx=bx-1 (bx=2-1 = 1)  bx又回到原值了
程序执行完成, ds:1 处的值为0      

■错误情况 如: [jcxz ok ]  (假设bx=1)
当 cl=0时  ch=0  bx=1
jcxz ok → dec bx (bx=0)→mov dx,bx (dx = 0) 显然  答案是 dx =1  而这里不是
■错误情况 如: [jcxz s] (假设bx=1)
当 cl =0  ch = 0 bx = 1
jcxz s 执行跳转到标号s, 又重复执行,显然当值 = 0 时  永远也执行不了 ok 处以后的指令,
lonelyhover
[第1楼]   [ 回复时间:2013-05-18 17:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-18 20:29
第二种情况,CX=0,那么做CX=CX-1得CX=-1,仍然跳转  所以add cx,cx错误
stop1204
[第2楼]   [ 回复时间:2013-05-19 07:35 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
回复:[第1楼]
------------------
add 是加法.      sub 才是减法......#_#
stop1204
[第3楼]   [ 回复时间:2013-05-19 07:37 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
回复:[第1楼]
------------------
你直接复制代码去调试就行了,,, add 那个我没调试 , 看下过程应该ok了
stop1204
[第4楼]   [ 回复时间:2013-05-19 07:45 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
回复:[第1楼]
------------------
之前还不知道   原来CX=FFFF            那就inc cx
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved