注册 登录
编程论坛 汇编论坛

王爽 实验4 疑?

小习小习 发布于 2012-09-27 21:36, 683 次点击
程序代码:
assume cs:code

code segment
  mov ax,cs
  mov ds,ax
  mov ax,20h
  mov es,ax
  mov bx,0h
  mov cx,(1ch),这个要填的
s:mov al,[bx]
  mov es:[bx],al
  inc bx
  loop s

 
  mov ax,4c00h
   int 21h
  
   code ends
   end  
这个代码的功能把mov ax,4c00h的代码复制到0:200处,我想了个笨办法,先随便填个,在从DEBUG看cx的值。在改过来,有没有更好的办法
13 回复
#2
zklhp2012-09-27 21:40
cx是复制多少东西 这个你应该在写代码的时候知道啊 怎么能试呢
#3
小习小习2012-09-27 21:42
回复 2楼 zklhp
书上就是出的这样的实验,要填这个代码的字节数
#4
小习小习2012-09-27 21:45
只有本站会员才能查看附件,请 登录

上图
#5
zklhp2012-09-27 21:46
以下是引用小习小习在2012-9-27 21:42:48的发言:

书上就是出的这样的实验,要填这个代码的字节数

把mov ax,4c00h的代码复制到0:200处

我明白了 是让你复制这两个语句 那这两个语句的长度是固定的 你可以算出来

delta1:
    mov ax, 4c00h
    int 21h
delta2:

那么 (delta2-delta1) 不就是这两个语句的总长度么 要活学活用
#6
小习小习2012-09-27 21:47
回复 5楼 zklhp
我的错少打了个“之前”,该打
#7
zklhp2012-09-27 21:50
以下是引用小习小习在2012-9-27 21:47:58的发言:

我的错少打了个“之前”,该打

反正 只要这个代码是确定的 就可以算出长度 自然也就可以填了那个空
#8
小习小习2012-09-27 21:53
回复 7楼 zklhp
说实话这delta1还没见过,哦看书去
#9
有容就大2012-09-27 21:54
有个另类的办法
    先把mov cx,?   改成 sub cx,5 来执行程序
因为在载入程序时,cx保存程序的长度,减去5是为减去mov ax,4c00h和int 21h的长度
然后再在DEBUG的过程中看CX的值。
#10
zklhp2012-09-27 21:56
以下是引用小习小习在2012-9-27 21:53:57的发言:

说实话这delta1还没见过,哦看书去

你可能知道变量定义的时候用标识符相减来确定大小 那对于代码自然也可以用标号减 代码和变量一样 最终都是数据
#11
小习小习2012-09-27 21:59
回复 9楼 有容就大
这个行,我的想法貌似沾了一点
#12
小习小习2012-09-27 22:01
回复 10楼 zklhp
谢谢Z版
#13
小习小习2012-09-27 22:03
回复 9楼 有容就大
也谢谢大哥
#14
虞城湖山2012-09-27 23:25
又学了一招,呵呵。
1