. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->第一个程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于程序加载后cx的值问题(疑难杂症,高手请帮忙!!!)  [待解决] 回复[ 4次 ]   点击[ 518次 ]  
liuxianming2001
[帖 主]   [ 发表时间:2008-11-16 17:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-03 00:18
第二版的91页倒数第三段说:Debug将程序从可执行文件加载入内存后,cx的值为程序的长度。
这毫无疑问!

但是当我用CV.EXE或TD.EXE将程序从可执行文件加载入内存后,cx的值为0

这是什么原因?


举个例子,有如下程序:

assume cs:codesg

codesg segment
start:  mov ax,cx
        mov ax,4c00h
        int 21h
codesg ends

end start

当执行完mov ax,cx后,ax的值为多少?
debug中调试的值为程序长度,而CV.EXE或TD.EXE中调试的值为0

为什么?

debug 和 cv.exe有什么区别?
mouse
[第1楼]   [ 回复时间:2008-11-17 18:11 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
debug 和 cv.exe有什么区别?
-------------
Debug将程序从可执行文件加载入内存后,cx的值为程序的长度--这个cx的意义是debug赋予的,包括ds等寄存器的意义。
cv是否设置cx有有意义是它本身的设定,从上面楼主的试验看它没有和debug有相同的设定。
作为不同的软件来说很正常。

就比如qq,我们可以自己设置热键,你的qq ctrl+alt+z(系统默认)可以弹出qq,我都可以自己设定成ctrl+q,作为同一个软件我们可以用不容的设定,对于不同的程序来说也可以不同的设定。cx代表程序长度的意义也是debug设定的产物。
liuxianming2001
[第2楼]   [ 回复时间:2008-11-22 07:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-03 00:18
按照一楼的说法,那程序
assume cs:codesg 

codesg segment 
start:  mov ax,cx 
        mov ax,4c00h 
        int 21h 
codesg ends 

end start 

在独立运行时,ax是随机了?因为其本身没去设置cx的初始值,即程序使用了未初始化的cx?
jjh15930929745
[第3楼]   [ 回复时间:2008-11-26 20:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-04 14:00
回复:[第2楼]
在独立运行时,ax是随机了?因为其本身没去设置cx的初始值,即程序使用了未初始化的cx?
------------------
那要看你用什么软件了!你说呢……
acool
[第4楼]   [ 回复时间:2008-11-27 20:15 ]   [引用]   [回复]   [ top ] 
荣誉值:49
信誉值:0
注册日期:2008-10-15 16:15
汇编书之说用debug调试程序,没有说用其他的啊。按照书上的做有好了。

有时候选择多了也不好啊 ^_^
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved