鱼C论坛

 找回密码
 立即注册
查看: 2327|回复: 1

[争议讨论] 关于实验4中第二小题答案问题???

[复制链接]
发表于 2012-2-24 16:23:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 无影 于 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 [bx],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 [ax],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 [bx],bl

inc bx

loop s

mov ax,4c00h

int 21h

code ends

end
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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=0000  BX=0000  CX=006E  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B75  ES=0B75  SS=0B85  CS=0B89  IP=0000   NV UP EI PL NZ NA PO NC
0B89:0000 B8850B        MOV     AX,0B85
-t

这是一个程序进入DEBUG以后 在给ax 赋值前各个寄存器的值   ax bx dx 都是0 cx则不是

还有就是关于[ax]  这个方式 编译不允许!~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 20:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表