努力学习 发表于 2012-2-23 13:05:01

实验四第二题

题目是用9条命令向内存0:200~0:23F依次传送数据0~63h,看了一下答案有一点不理解,
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
上面答案中红色那行不理解,既然 mov bl,0   ,但是bh还没有被赋值,所以mov ,bl中的偏移地址不一定是0000h吧?
      

莫名其妙 发表于 2012-2-23 13:05:02

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

刚发了一堆废话删掉了 看错你的意思了现在就应该对了

一般情况下在你编写的程序里在程序开始以后没有对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则不是

功夫猫 发表于 2012-2-23 13:35:46

本帖最后由 功夫猫 于 2012-2-23 13:40 编辑

mov bl,0
改为mov bx,0
inc bl
改为inc bx         改不改无所谓

努力学习 发表于 2012-2-23 16:36:28

莫名其妙 发表于 2012-2-23 15:51 static/image/common/back.gif
刚发了一堆废话删掉了 看错你的意思了现在就应该对了

一般情况下在你编写的程序里在程序开始以后没有对 ...

你的意思我懂了,谢谢
页: [1]
查看完整版本: 实验四第二题