. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->[bx]和loop指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  将“mov   ax,4c00h”之前的指令复制到内存0:200处,你是如何确定CX值的?  [已解决] 回复[ 4次 ]   点击[ 541次 ]  
debugkkk
[帖 主]   [ 发表时间:2008-04-07 15:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:16
注册日期:2008-03-17 20:21
下面的程序的功能是将“mov   ax,4c00h”之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。   
  原题: 
  assume   cs:code   
  code   segment   
            mov   ax,___   
            mov   ds,ax   
            mov   ax,0020h   
            mov   es,ax   
            mov   bx,0   
            mov   cx,____   
  s:        mov   al,[bx]   
            mov   es:[bx],al   
            inc   bx   
            loop   s      
            mov   ax,4c00h   
            int   21h   
  code   ends      
  end


mov   cx,____ 这里我先想了个数,结果在测试时发现错了,想了半天不知道应该是多少,后来在debug中测试出长度后才知道应该是18H。

在下不才,只能用这种方法,不知道各位是如何确定CX值得,还希望各位多多指点啊。
app
[第1楼]   [ 回复时间:2008-04-08 21:25 ]   [引用]   [回复]   [ top ] 
荣誉值:15
信誉值:2
注册日期:2007-12-05 14:06
填好值,用debug加载程序,CX初始化时存放程序的长度,减去最后两句的长度就可以。
wdm
[第2楼]   [ 回复时间:2008-04-08 21:28 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
楼上的办法通行!
不过,可以自己跳开这个题目去想想:cx是总长度,减去后面两条指令的长度就可以了。
见到一个人自己添了一条指令
mov cx,cx
sub cx,5  ;减去后面的mov ax,4c00h 和 int 21h指令的长度。当然,这不是这道题的答案,但是反应了我么你的一个处理问题的思维方式。
debugkkk
[第3楼]   [ 回复时间:2008-04-13 22:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:16
注册日期:2008-03-17 20:21
呵呵,学习了,谢谢楼上两位的指点。
debugkkk
[第4楼]   [ 回复时间:2008-04-13 22:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:16
注册日期:2008-03-17 20:21
此贴由 贴主 于 [ 2008-04-13 22:20 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(app):3分   2楼(wdm):3分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved