课件制作 发表于 2011-7-30 21:05:07

比较这两段代码,看看哪个更正确

本帖最后由 weixianlang 于 2011-7-31 09:07 编辑

    编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括“mov ax,4c00h”和“int 21h”。
   比较这两段代码,看看哪个更正确
第一种:
assume cs:codesg
codesg segment
mov ax,0020h
mov ds,ax
mov bl,0
mov cx,40h
s: mov ,bl
inc bl
loop s

mov ax,4c00h
int 21h

codesg ends
end


第二种:
assume cs:code
code segment

start:mov ax,0020h
mov ds,ax
mov bx,0
mov cx,63
s: mov ,bl
inc bx
loop s

mov ax,4c00h
int 21h

code ends
end start

zzkkw 发表于 2011-7-31 08:29:02

感觉第二个好些吧
第一个说不定bh里也有值勒

课件制作 发表于 2011-7-31 08:39:39

英雄所见略同

china0008 发表于 2011-7-31 09:34:41

嗯。不错不错,很有研究精神。 再试试用 字 进行操作 循环 20H 就完成数据填充试试。加油。

一页空纸 发表于 2011-7-31 10:36:58

在前面用40h,下面的为什么用63,循环次数还相等吗?还有,能自已长吗?

课件制作 发表于 2011-7-31 12:01:46

本帖最后由 china0008 于 2011-8-2 09:03 编辑

china0008 发表于 2011-7-31 09:34 static/image/common/back.gif
嗯。不错不错,很有研究精神。 再试试用 字 进行操作 循环 20H 就完成数据填充试试。加油。
版主老师您好!
       我用loop循环20h次,虽然改变了指定空间的内存内容,但是我却用了12行代码,感觉很复杂。我思考了很久也找不出怎么把这几行代码进行优化,希望老师多多指点!再一次谢谢老师的教导。以下是我写的代码:

assume cs:code
code segment
          start: mov ax,0020h
          mov ds, ax
          mov bl,0
          mov cx,20h

s:      mov al,bl
          inc bl
          mov ah,bl
          mov ds:,ax
          inc bl
          loop s

         mov ax,4c00h
         int 21h
code ends
end start

死亡请帖 发表于 2011-7-31 14:23:20

课件制作 发表于 2011-7-31 12:01 static/image/common/back.gif
版主老师您好!
       我用loop循环20h次,虽然改变了指定空间的内存内容,但是我却用了12行代码,感觉 ...

我来给你改下:
assume cs:code
code segment
start:mov cx,20h
          mov ds, cx
          mov bx,0
          mov ax,100h
s:       mov ,ax
          add ax,202h
          add bx,2
          loop s

mov ax,4c00h
int 21h
code ends
end start

课件制作 发表于 2011-7-31 14:41:06

死亡请帖 发表于 2011-7-31 14:23 static/image/common/back.gif
我来给你改下:
assume cs:code
code segment


改得真好,方法新,还用cx给ds了地址。

china0008 发表于 2011-8-2 09:34:28

楼上 7# 其实改的很好你还要看看他 ax 的初值和 每次为什么递增 202H   如果硬要 把代码缩到9行 ,去掉 对bx的初始化也是可以的,也能得到正确的结果。但是从严谨角度考虑,还是要初始化的。
页: [1]
查看完整版本: 比较这两段代码,看看哪个更正确