
王爽汇编第五章实验疑问
提示:1.因为题目的要求是把代码段内的指令当作数据,复制到目的地址。所以,源数据段ds和代码段cs相同。=>循环S:moval,[bx]moves:[bx],al意思不是...
提示:1.因为题目的要求是把代码段内的指令当作数据,复制到目的地址。所以,源数据段ds和代码段cs相同。
=>循环S:mov al,[bx] mov es:[bx],al 意思不是把代码段DS:BX中的数据送入al 再送入es:bx,怎么看出来是提示1 源数据段ds和代码段cs相同???
提示:
2.在DEBUG时我们可用R命令查看CX的值,这时我们可以看到CX的值为1D,由此我们可以算出该程序的长度[1Dh-5h]=18h,之所以减5是为了满足题目的要求(因为mov ax,4c00h/int 21h这两条指令的长度等于5)
=>我按照提示 输入第一个空cs,第二个空18h,为什么我-r看到cx其实是1C???
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,18h
s:mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end 展开
=>循环S:mov al,[bx] mov es:[bx],al 意思不是把代码段DS:BX中的数据送入al 再送入es:bx,怎么看出来是提示1 源数据段ds和代码段cs相同???
提示:
2.在DEBUG时我们可用R命令查看CX的值,这时我们可以看到CX的值为1D,由此我们可以算出该程序的长度[1Dh-5h]=18h,之所以减5是为了满足题目的要求(因为mov ax,4c00h/int 21h这两条指令的长度等于5)
=>我按照提示 输入第一个空cs,第二个空18h,为什么我-r看到cx其实是1C???
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,18h
s:mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end 展开
1个回答
展开全部
这个实验在这边不怎么好,有点突然。。。
因为题目要求是吧mov 4c00h之前的指令复制到目的内存0:200 也就是把CS的指令当成数据给复制过去,,既然是数据 那就是通过数据段来传,所以DS数据段 mov ds,cs。 再复制到0:200
2. 你看到1c是因为你用的是mov ax,cs 这个指令时两个字节 你换成 mov ax,code 就是三个字节
所以1c就变成1d了.。。。。。 骚年继续努力吧。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询