haiouda 发表于 2014-8-10 17:10:43

实验四没看懂,请高手指教

assume cs:code
code segment
   mov ax,20h
   mov ds,ax
       mov bx,0
   mov cx,64
s:   mov ,dl
   inc bx
       loop s
       mov ax,4c00h
       int 21h
       
          
code ends
end

和下面这个

assume cs:code
code segment
   mov bx,20h
   mov ss,bx
       mov sp,40h
       mov bx,3f3eh
       mov cx,32
s:   push bx
   sub bx,202h
       loop s
       mov ax,4c00h
       int 21h
       
code ends
end


上面二个没看明白
下面这个是我自己编的:
assume cs:code
code segment
   mov ax,0
   mov ds,ax
   mov bx,200h
   mov dl,0
       mov cx,64
s:   mov ,dl
   inc dl
       inc bx
       loop s
       mov ax,4c00h
       int 21h
       
          
code ends
end

haiouda 发表于 2014-8-10 17:12:11

还有就是第一个,我按上面写完,运行,得不到正确结果

haiouda 发表于 2014-8-10 17:26:30

第一个,现在看懂了,我把小写的BL,错打成小写的DL 了,所以没有得到正确结果
第二个,还是没看懂,正看着呢,请指教第二个

haiouda 发表于 2014-8-10 17:27:23

随便问一下,WIN7里的,输入法,你们怎么弄的,我这都没法切换,知道的说下,谢谢了

haiouda 发表于 2014-8-10 17:36:47

我把第二个改成这样子我就能看懂了,可第二个还是不太懂
assume cs:code
code segment
      mov bx,20h
      mov ss,bx
          mov sp,40h
          mov bx,6362
          mov cx,32
s:   push bx
      sub bx,202
          loop s
          mov ax,4c00h
          int 21h
         
code ends
end

haiouda 发表于 2014-8-10 17:54:19

6362 一进到计算机里就变成二进制了,:huffy:

haiouda 发表于 2014-8-10 18:10:47

费个牛劲,才看明白,是怎么一回事:titter:

华彩篇章 发表于 2014-8-10 18:21:54

全是楼主的回复

haiouda 发表于 2014-8-10 18:27:15

数学真是个奇妙的东西,6362-6160=6160-5958。。。。。=202
                                     3F3E-3D3C=3D3C-3B3A。。。。=202:big

小靚同学Leon 发表于 2014-8-10 18:27:53

其实王老师这道编程题有个技巧,先push 3f3e,则3f3e入栈,3f推进里,3e推进里,接着执行sub 202h,bx=3D3C,为什么要减202呢,其实就是让bx高位和低位分别减2(减完之后的数就是接下来进内存的数),你将202H转为二进制就明白了,接着3d3c推进相应内存。其实就是利用压栈操作实现逆向排序。

小靚同学Leon 发表于 2014-8-10 18:30:29

好吧,我还是慢了一步。楼主已经解决了

haiouda 发表于 2014-8-10 19:10:38

感谢:小靚同学Leon,你来得一点也不晚哟
实验4第三题我又没看明白: “MOV CX,18H” 这个18H是怎么看出来的??

还有CX=0C79,那么在DEBUG里, “B8 79 0C” 最前面的B8哪里去了??
   MOV AL, (BX=0) 为什么,CX不是等于79B8 ???

haiouda 发表于 2014-8-10 19:14:21

大概是上面这个意思了,BX=0,为什么不从200:0开始添而是从 200:1开始添写

haiouda 发表于 2014-8-10 19:27:14

18H,应该是程序长度,在程度调试时可以从DEBUG中看到,可这是填空,程序还没写完,18H如何得到的呀???

haiouda 发表于 2014-8-10 20:44:41

基本搞明白了,现在的问题就是,所有MOV AX,4C00H前面的都复制过去了,但在最后,多出一个字节CC
,不知道这个字节,是从哪里来的???

小靚同学Leon 发表于 2014-8-10 20:45:37

haiouda 发表于 2014-8-10 19:27
18H,应该是程序长度,在程度调试时可以从DEBUG中看到,可这是填空,程序还没写完,18H如何得到的呀???

首先我们可以确定18H是一个循环计数值,而这个计数值肯定是代码段机器指令的字节数。所以在做这道题的时候,这个数是最后填的,你得先把程序确定下来,最后才知道总共的字节数。

haiouda 发表于 2014-8-10 20:47:08

这个CC在CS段里,根本没有;
CX,减到1就全复制过去了,这个CC没有理由在这里的;
复制之前,特意有D查看了0:200 里面是空的

haiouda 发表于 2014-8-10 20:48:41

不会发图呀,这么说,说明白了吧{:1_1:}

haiouda 发表于 2014-8-10 20:58:31

感谢小靚同学Leon 的热心,回复;

谁能说下,引用楼上的话,是怎么弄的,还有怎么发图片?

小靚同学Leon 发表于 2014-8-10 21:14:58

haiouda 发表于 2014-8-10 20:58
感谢小靚同学Leon 的热心,回复;

谁能说下,引用楼上的话,是怎么弄的,还有怎么发图片?

回复别人的时候请在回复帖的下方点击回复,这样作者会及时看到回复通知滴。

另外发帖时,有一个发图选项的,直接编辑就可以了。希望能帮助你
页: [1] 2
查看完整版本: 实验四没看懂,请高手指教