毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

将“mov ax, 4c00h”之前的指令复制到内存0:200处,补全程序

更新时间:2013-5-8:  来源:毕业论文

下面的程序的功能是将“mov ax, 4c00h”之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。

assume cs:code

code segment

    mov ax,--?
    mov ds,ax
    mov ax,0020h
    mov es,ax
    mov bx,0
    mov cx,--?
  s:mov al,[bx]
    mov es:[bx],al
    inc bx
    loop s

    mov ax,4c00h
    int 21h

code ends

end
提示:

(1)复制的是什么?从哪里到哪里?毕业论文 

(2)复制的是什么?有多少个字节?你如何知道要复制的字节的数量?

第一个空,没有疑问。填cs。即把代码段内的指令当作数据,复制到目的地址。源数据段与ds与代码段cs想同。

第二空答案是18h。这里就有些不明白了。上面说先给cx一个小值。编译链接后用debug看cx中的值。然后再减去5h。那么我的问题是,cx会自动存程序长度吗?是只有这个程序里面是这样还是其他的程序都这样。而且答案说会看到cx为1D,但是我r查看cx为1c

我做这个程序的时候是手动计算需要复制的代码的长度的,具体方法是:
1.先在第二个空那随便填一个数字,不要太大了
2.将程序编译链接,用Debug打开程序,U 一下,查找 mov ax,4C00H 的地址,这下你就知道那段需要被复制的代码实际有多长了吧?
3.将真正的长度填入第二个空

实际有简单的方法确定那段代码的长度,不过作者考虑到知识屏蔽,所以在第四章没说,你学到后面就知道了

我想是因为大家写的程序不一样,所以才有的是17H有的是18H。
不同之处在这里
mov ax,cs

mov ax,code
第一个是2字节的,第二个是3字节的,你自己试试看

assume cs:code   code segment    mov ax, code   mov ds, ax  mov ax, 0020h   mov es, ax  mov bx, 0   mov cx, 循环计数 s:mov al,[bx]   mov es:[bx],al  inc bx  loop s     mov ax,4c00h   int 21h   code ends   end

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。