问一道汇编语言的题目,急求解答!

来源:百度知道 编辑:UC知道 时间:2024/05/06 08:47:45
下面的程序的功能食将“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,4cooh
int 21h
code ends
end
另外 复制的是什么?从哪里到哪里?有多少字节?如何知道要复制的字节的数量?
请高手解答,不要只写答案,解释一下,谢谢!

复制的是什么?
你自己说得很清楚了 “下面的程序的功能食将“mov ax,4c00h”之前的--->指令<---复制到内存0:200处,”

从哪里到哪里?
从 当前位置 ---> 0:200H
不过位置好像有些不对,因为0:200H还在系统的中断向量区,会破坏系统的,绝对导致死机。

有多少字节?如何知道要复制的字节的数量?
笨的办法是汇编之后看每一条指令的有效地址,
更好的办法是,在复制开始和结束的指令(实际上应该是他后面的那条指令)前都加上一个标号,标号的值就是指令对应的地址,两个标号相减就是对应的字节数。

assume cs :code
code segment
start:mov ax,10h //10h
mov ds.ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx, end-start //end-start
s:mov al,[bx] //]
mov es:[bx],al
inc bx
loop s
mov ax,4cooh
end:int 21h
code ends
end

1.复制的是将一段代码由一个地方复写到另一个地方
2.有多少字节?end-start
3.如何知道要复制的字节的数量? 标号之差