老师 发表于 2014-9-16 19:58:08

书本上的程序效率不一定最高

首先声明下我刚开始自学汇编,也没有看甲老大的视频!
好了,回到正题。对于程序5.9(P121)代码如下:
ASSUME cs:Codesg

Codesg SEGMENT
         mov ax,0ffffH
           mov ds,ax
           mov ax,20H
           mov es,ax
           mov dx,0H
           mov bx,0H
           mov cx,12
S:   mov dl,ds:
       mov es:,dl
           inc bx
loop S

      mov ax,4c00H
          int 21H
Codesg ENDS

END
对于上面的程序,它所实现的功能就是将“FFFF:0B"种的内容复制到“0:20020B"处,其实还有两种比这个更好的方法(程序5.9已经相比优化了),这两种方法的代码如下:
第一种
ASSUME cs:Codesg


Codesg SEGMENT
         mov ax,0ffffH
           mov ds,ax
           mov ax,20H
           mov es,ax
           mov dx,0H
           mov bx,0H
           mov cx,6
S:   mov dx,ds:
       mov es:,dx
           add bx,2
loop S


      mov ax,4c00H
          int 21H
Codesg ENDS


END

第二种
ASSUME cs:Codesg

Codesg SEGMENT
         mov ax,0ffffH
           mov ss,ax
           mov sp,0H
           mov ax,20H
           mov ds,ax
           mov bx,0H
           mov cx,6
S:   pop ds:
       add bx,2
loop S

       mov ax,4c00H
           int 21
Codesg ENDS

END
本人只是将自己的学习心得和大家分享,如有错误请大家指教,谢谢!!


小甲鱼 发表于 2014-9-16 20:44:18

不错,那个系列我跟着书本来的~

小靚同学Leon 发表于 2014-9-16 22:59:31

小甲鱼 发表于 2014-9-16 20:44
不错,那个系列我跟着书本来的~

第二种方法的技巧其实书本上是有提到过的。
页: [1]
查看完整版本: 书本上的程序效率不一定最高