. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->[bx]和loop指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验4的第三小题  [待解决] 回复[ 10次 ]   点击[ 1321次 ]  
774337745
[帖 主]   [ 发表时间:2014-08-14 17:49 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-07-24 16:51
第二个空,答案填  MOV cx ,18     。我不懂怎样才能知道这个程序所需要的内存的大小。

大家指点指点,谢谢啦!
gyq
[第1楼]   [ 回复时间:2014-08-14 20:19 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
先填估填一个数,编译连接,然后再去debug下看整个程序有多长,用得到程序长度的这个数替换之前填的数字。
774337745
[第2楼]   [ 回复时间:2014-08-14 20:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-07-24 16:51
哦,这样也可以。  原来答案是这样来的,我还以为会有什么方法可以算出来的。。。
447861996
[第3楼]   [ 回复时间:2014-08-17 11:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-04-28 20:08
还有个笨一点的办法就是直接数字节数。
jumpbird
[第4楼]   [ 回复时间:2014-08-29 20:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-08-29 19:48
assume cs:code
code segment
        mov ax,cs    ;cs是第一条指令段地址
        mov ds,ax

        mov ax,0020h
        mov es,ax

        mov bx,0
        mov cx,23      ;10条指令共23字节

    s: mov dl,[bx]
       mov es:[bx],dl
       inc bx
       loop s

       mov ax,4c00h
       int 21h
code ends
end
gyq
[第5楼]   [ 回复时间:2014-08-29 23:55 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
其实随便填一个数字进行试也是在数这些指令的长度,只不过是借助debug来数。不断哪种方法,目的就是知道这些指令的总长度。
dyg104
[第6楼]   [ 回复时间:2014-10-01 11:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-08-02 20:20
先随便填一个数字,再一次一次来调试。
kelamoyujuzhen
[第7楼]   [ 回复时间:2015-01-13 20:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2015-01-04 21:38
assume cs:code    
code segment    
     mov ax, code ;或mov ax, cs  
     mov ds,ax    
     mov ax,0020h    
     mov es,ax    
     mov bx,0    
     sub cx,5
  s: mov al,[bx]    
     mov es:[bx],al    
     inc bx    
     loop s    
     mov ax,4c00h    
     int 21h    
code ends    
end
用这种方法,不用计算前面占了多少内存,你只需要知道后面两句话占了5byte就行。
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  
cx值是不需要设的,debug时候默认是程序的长度。安全空间0:200h~~0:2ffh,也没有问题。这段代码意思就是:在20:0  ~  20:16这块区域用代码段cs:0  ~  CS:16填充。也就是把代码段全部内容复制到20:0  ~  20:16这块区域(包括了mov ax,4c00h ;int 21h  这2句话)你可以对比着看
mosof
[第8楼]   [ 回复时间:2015-01-29 22:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2015-01-29 21:41
这样可以呀,没看书上源码之前先写了下试试
assume cs:codes
codes segment
      mov ax,0020h
      mov ds,ax
      sub ax,ax
      sub bx,bx
      mov cx,s1
s:   mov al,cs:[bx]
      mov [bx],al
      inc bx
      loop s
s1: mov ax,4c00h
      int 21h
codes ends
end
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved