挥世及至吾 发表于 2017-8-18 18:59:38

都来看一下 我这个程序到底哪有问题

基本上是抄书的,一开始没问题,后面改了一下,然后又改了回来,然后就报错,然后我就不解了
(非法使用cs寄存器,必须是索引或基数寄存器)
assume cs:codesg
codesg segment

start: mov ax,0ffffh
       mov cs,ax            ;illegal use of cs register
       mov ax,6
       mov cx,3
   s:add dx,ds:       ;must be index or base register
       loop s

       mov ax,4c00h
       int 21h
codesg ends
end start

丶忘却的年少o 发表于 2017-8-18 19:38:42

我记得cs是不能在外面写代码编译连接改变的,只能在debug内部。还有你的ds都没给他初始化就进行运算了

挥世及至吾 发表于 2017-8-18 21:16:16

丶忘却的年少o 发表于 2017-8-18 19:38
我记得cs是不能在外面写代码编译连接改变的,只能在debug内部。还有你的ds都没给他初始化就进行运算了

cs不能通过外部编译连接改变?jmp也不行?
ds初始化了也是同样的结果assume cs:codesg
codesg segment

start: mov ax,0ffffh
       mov ds,ax
       mov ax,6
       mov cx,3
   s:add dx,ds:       ;must be index or base register
           loop s

       mov ax,4c00h
       int 21h
codesg ends
end start

丶忘却的年少o 发表于 2017-8-18 21:45:17

本帖最后由 丶忘却的年少o 于 2017-8-18 21:54 编辑

挥世及至吾 发表于 2017-8-18 21:16
cs不能通过外部编译连接改变?jmp也不行?
ds初始化了也是同样的结果

第8行的ds:改成ds:,课本第五章 5.1

thunder 发表于 2017-9-18 22:42:04

add dx,ds:
这两个内容可以相加吗?

若余相思 发表于 2017-9-19 11:10:23

ax不能作为间接索引寄存器,只能用bx,后面会学到用di、si索引

若余相思 发表于 2017-9-19 11:11:13

thunder 发表于 2017-9-18 22:42
add dx,ds:
这两个内容可以相加吗?

内容是可以相加的,因为dx指明了是字单元,但是用ax当作间接索引是错误的
页: [1]
查看完整版本: 都来看一下 我这个程序到底哪有问题