无影 发表于 2012-2-24 16:23:31

关于实验4中第二小题答案问题???

本帖最后由 无影 于 2012-2-24 16:39 编辑

(2) 编程,向内存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
该答案有问题,如何能保证bx中高位寄存器中为0!如不为0,程序不久错了吗?所以我认为应该改为以下程序。
assume cs:codesg

codesg segment

   mov ax,0020h

   mov ds,ax

   mov al,0

   mov cx,40h

s:   mov ,al

   inc al

   loop s



   mov ax,4c00h

   int 21h



codesg ends

end

assume cs:code

code segment

mov ax,20h

mov ds,ax

mov bx,0

mov cx,40h

s: mov ,bl

inc bx

loop s

mov ax,4c00h

int 21h

code ends

end


莫名其妙 发表于 2012-2-24 16:29:48

本帖最后由 莫名其妙 于 2012-2-24 16:39 编辑

这道题上次有人问过了
一般情况下在你编写的程序里在程序开始以后没有对ax bx 赋值的情况下 它们的值都是 0
   也就是 ax bx 的值在没改动的情况下初值都是ax=0000   bx=0000      

而且mov bl,0 也不是说给bl置0而是将要0-63h的值放进BL中 !~


E:\TEST\1>debug 2.exe
-r
AX=0000BX=0000CX=006EDX=0000SP=0000BP=0000SI=0000DI=0000
DS=0B75ES=0B75SS=0B85CS=0B89IP=0000   NV UP EI PL NZ NA PO NC
0B89:0000 B8850B      MOV   AX,0B85
-t
这是一个程序进入DEBUG以后 在给ax 赋值前各个寄存器的值   ax bx dx 都是0 cx则不是

还有就是关于这个方式 编译不允许!~
页: [1]
查看完整版本: 关于实验4中第二小题答案问题???