鱼C论坛

 找回密码
 立即注册
查看: 2120|回复: 8

请教一个汇编程序代码长度的计算

[复制链接]
发表于 2013-1-27 10:07:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 遒羽 于 2013-1-27 10:13 编辑

下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序
问题1:“mov用在寄存器之间传送数据的指令是2个字节,用在寄存器和立即数之间是3个字节”怎么理解?
问题2:CX在载入程序后保存程序的长度17或者18怎么算出来的。
谢谢!
assume cs:code    
code segment    

     mov ax, code ;或mov ax, cs  
     mov ds,ax    
     mov ax,0020h    
     mov es,ax    

     mov bx,0    
     mov cx, 18h   ;或mov cx, 17h    ;或sub cx,5

  s: mov al,[bx]    
     mov es:[bx],al    
     inc bx    
     loop s    
     mov ax,4c00h    
     int 21h    
code ends    
end
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-27 19:01:44 | 显示全部楼层
本帖最后由 NGtailang 于 2013-1-27 19:13 编辑

你少了程序入口,提示,debug 在加载可执行文件如内存后, CX中存放的是程序的长度(书本p91)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-1-27 21:03:24 | 显示全部楼层

程序入口可以不需要,是吗?还有我的问题是本题程序程度为何是17.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-29 09:19:48 | 显示全部楼层
继续坐等答案。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2013-1-29 10:14:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-29 22:46:05 | 显示全部楼层
第一空填cs
第二空随便填一个数字,
编译后,debug下
用r看寄存器的状态,
用u翻译代码。
直接算开始代码到mov ax,4c00h代码前的值就行了

评分

参与人数 1鱼币 +2 收起 理由
s0512 + 2 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-1-29 22:50:16 | 显示全部楼层
shansongh 发表于 2013-1-29 22:46
第一空填cs
第二空随便填一个数字,
编译后,debug下

如果不用debug可以直接算出cs为17h或者18h吗?还有17H和18h有什么区别??谢谢!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-29 22:50:16 | 显示全部楼层
第一空填cs
第二空随便填一个数字,
编译后,debug下
用r看寄存器的状态,
用u翻译代码。
直接算开始代码到mov ax,4c00h代码前的值就行了
再改回来就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-29 22:58:00 | 显示全部楼层

RE: 请教一个汇编程序代码长度的计算

遒羽 发表于 2013-1-29 22:50
如果不用debug可以直接算出cs为17h或者18h吗?还有17H和18h有什么区别??谢谢!!

我暂时知道这些,应该还是有其他办法的
而且可以通过算出后面两个汇编指令的大小,通过cx获得相应的值
17h 18h的差距应该在于后面偏移地址17对应足够的信息了,但是18对应的字型数据的高位为零,所以可用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 02:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表