风剑河 发表于 2012-2-12 16:01:16

试验4,第三题的问题求助

assume cs:code
code segment
   mov ax,code;code为所填写的数据
   mov ds,ax
   mov ax,0020h
   mov es,ax
   mov bx,0
   mov cx,18h   ;18h为所填写的数据
s:   mov al,
   mov es:,al
   inc bx
   loop s
    mov ax,4c00h
   int 21h
code ends
end

答案上的这个code是什么意思?为什么不用CS呢??上课时没见过 mov ax,code 这种用法……

无名《云岭》 发表于 2012-2-12 16:01:17

段名就相当于一个标号,它代表了段地址,所以指令“mov ax,code”的含义就是将名称为“code”的段的段地址送入ax。这是我在书上抄来的,我也在消化中,我抄的这段是在131页,131页中写的是mov ax,data,我想意识应该是一样吧。

/调皮_zzqwa 发表于 2012-2-12 17:57:56

是啊 !我也想问一下

莫名其妙 发表于 2012-2-12 18:41:37

我用DEBUG测试了下用CS 也可以调试的过 COde 跟cs 效果一样的吧 应该都是获取当前你机器上的当前代码段的地址

风剑河 发表于 2012-2-13 08:39:36

书上是这么说的“一个段中的数据的段地址可由段名代表”,再加上甲鱼老师上课时说的“把data看成一段数据就好了,CPU不认识data,但CPU认识DS和AX,通过AX间接使ds=data,CPU就认识data了,知道它代表段地址了。”

风剑河 发表于 2012-2-13 17:32:43

古语说得好,读书百遍其意自现,这才是第一次复习就有更深的理解了,课本第79页对标号有明确的解释“汇编源程序中,除了汇编指令和伪指令外,还有一些标号,比如“codesg”。一个标号指代了一个地址。比如codesg在segment的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。” 可见标号在经过编译器处理后已经成为了一个段的段地址,CPU根本就看不到标号

546718705 发表于 2016-3-20 11:13:51

{:10_256:}

546718705 发表于 2016-3-20 11:14:52

546718705 发表于 2016-3-20 11:16:18

灌水为了鱼币打扰了啊找了个很久之前的    打扰

546718705 发表于 2016-3-20 11:17:11

打扰·····

546718705 发表于 2016-3-20 11:18:42

hello

546718705 发表于 2016-3-20 11:19:25

hello2

546718705 发表于 2016-3-20 11:20:09

split

546718705 发表于 2016-3-20 11:21:21

append

546718705 发表于 2016-3-20 11:22:07

count

546718705 发表于 2016-3-20 11:22:49

str

546718705 发表于 2016-3-20 11:23:29

open

546718705 发表于 2016-3-20 11:24:12

sorry

同步人生 发表于 2017-8-26 14:30:12

不懂,{:10_269:}
页: [1]
查看完整版本: 试验4,第三题的问题求助