关于实验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: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]