鱼C论坛

 找回密码
 立即注册
查看: 2122|回复: 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”。

程序如下:
  1. assume cs:codesg

  2. codesg segment

  3.      mov ax,0020h

  4.      mov ds,ax

  5.      mov bl,0

  6.      mov cx,40h

  7. s:   mov [bx],bl

  8.      inc bl

  9.      loop s



  10.      mov ax,4c00h

  11.      int 21h



  12. codesg ends

  13. end
复制代码
该答案有问题,如何能保证bx中高位寄存器中为0!如不为0,程序不久错了吗?所以我认为应该改为以下程序。

  1. assume cs:codesg

  2. codesg segment

  3.      mov ax,0020h

  4.      mov ds,ax

  5.      mov al,0

  6.      mov cx,40h

  7. s:   mov [ax],al

  8.      inc al

  9.      loop s



  10.      mov ax,4c00h

  11.      int 21h



  12. codesg ends

  13. end

  14. assume cs:code

  15. code segment

  16. mov ax,20h

  17. mov ds,ax

  18. mov bx,0

  19. mov cx,40h

  20. s: mov [bx],bl

  21. inc bx

  22. loop s

  23. mov ax,4c00h

  24. int 21h

  25. code ends

  26. 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-5-1 23:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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