wen_hu 发表于 2011-5-21 01:43:42

实验5 第5题

本帖最后由 loop 于 2011-5-21 12:40 编辑

assume cs:code

a segment

      db 1,2,3,4,5,6,7,8

a ends

b segment

        db 1,2,3,4,5,6,7,8

b ends


m segment

        db 0,0,0,0,0,0,0,0

m ends

code segment

start:mov ax, a
        mov ds,ax
        mov ax,m
        mov es,ax


        mov bx,0
        mov cx,8

s:      mov dl,
        mov es:,dl
        inc bx
        loop s

       
        mov ax,b
        mov ds,ax
        mov bx,0
        mov cx,8

t:        mov dl,
        add es:,dl
        inc bx
        loop t
       
        mov ax,4c00h
        int 21h

code ends
end start如果第三个段用c做标号就会在编译的时候出错,而换成m做标号就没问题了,这是为什么,而且在assume伪指令中我们对a,b段没有指定相应的段寄存器,也没什么错误,那么如果我们也不指定code段,也可以吗?

Y.H 发表于 2011-5-21 01:53:45

呵呵 a,b,m段为数据段 数据段可以不直接与DS挂钩 但是代码段不行 具现在所学的知识所知如果不实现把代码段与CS挂钩那么编译不过去就算过去了,寄存器CS:IP指向的并不是我们想要执行的程序
(呃…那个C段用标号C没问题啊!我的编译器能通过!你的是什么版本的?我的是masm5.0)
试试换个版本的编译器!
祝你成功!

wen_hu 发表于 2011-5-21 01:56:50

回复 Y.H 的帖子

谢谢了,我的是masm6.15的,难道是版本的问题?

a15160665565 发表于 2011-5-21 09:03:34

回复 wen_hu 的帖子

很感谢你 是编译器的问题 我也换用5.0的
页: [1]
查看完整版本: 实验5 第5题