. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->[bx]和loop指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验4,关于ip的疑问  [待解决] 回复[ 5次 ]   点击[ 618次 ]  
menghui
[帖 主]   [ 发表时间:2013-08-25 23:40 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-07-28 12:56
3)下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。 

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以上是实验的内容。
,我在来说一下我的理解,cs:ip指向程序的第一条,段地址在cs内,所以把cs的值附给ds,用bx里的内容作偏移地址,bx初始化是0,所以第一个地址是cs:bx。我们如何知道复制的内容最后一个地址是多少?我们就需要知道这个程序的长度。在这里我提出2个疑问,如果ip里面的值不是从0开始的话,哪如何办呢?如何知道这个程序程序地址是连续的?
lilin
[第1楼]   [ 回复时间:2013-11-11 22:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-10-24 11:36
我不明白的地方是怎么知道这段程序的机器码的字节长度。
xiaoyaogege2012
[第2楼]   [ 回复时间:2013-11-26 20:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-07-10 12:30
CX里放着代码的长度
gzl506
[第3楼]   [ 回复时间:2014-04-04 23:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-04-04 21:12
如题
dyg104
[第4楼]   [ 回复时间:2014-10-01 12:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-08-02 20:20
1,ip一定从0开始。可以参照一下2.9段的概念:一个段的起始地址也一定是16的倍数,
2,因为汇编是针对硬件编程,编程人员就要熟悉计算机底层的基本原理,一个段的段地址是否连续需要编程人员自己确定。只要确定了段,就可以判定这个程序所在是否连续的。
kelamoyujuzhen
[第5楼]   [ 回复时间:2015-01-13 20:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2015-01-04 21:38
你写好程序,编译连接得到exe文件后,debug时cx中的数值就是程序的长度。
assume cs:code  
code segment  
        mov ax,0020h  
        mov es,ax  
        mov bx,0          
S:        mov al,cs:[bx]  
        mov es:[bx],al  
        inc bx  
        loop S  
        mov ax,4c00h  
        int 21h   
code ends  
end  
自己写了个全复制的程序。在20:0  ~  20:16这块区域用代码段cs:0  ~  CS:16填充。也就是把代码段全部内容复制到20:0  ~  20:16这块区域(包括了mov ax,4c00h ;int 21h  这2句话)
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved