关于一个代码段问题,感觉很奇怪
本帖最后由 骇客king 于 2015-6-4 12:29 编辑assume cs:code
code segment
;第一步:把中断向量表中0号表项内容进行修改,使之指向我们自己编写
;的中断处理的入口地址
start: mov ax,0
mov ds,ax
mov word ptr ds:,200h
mov word ptr ds:,0
;第三步,把我们刚才写好的0号中断处理程序拷贝到中断向量表在中
;p0号表项所指向的内存地址中0000:0200
mov ax,cs
mov ds,ax
mov si,offset int0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset int0end-offset int0
cld
rep movsb
;第四步引发中断
mov ax,1000h
mov bh,0
div bh
mov ax,4c00h
int 21h
;第二步:编写自己的中断处理程序,实现在屏幕中间显示字符串功能
int0:jmp short int0start
db"aaaaaaaaaaaa"
int0start:mov ax,0b800h
mov es,ax;配置显存首地址0b800
;拷贝到显存地址空间
mov ax,cs
mov ds,ax
mov si,202h
mov di,12*160+36*2
mov cx,12
s:mov al,ds:
mov es:,al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
int0end:nop
code ends
end start
报错 5个错误,全是error A2062: Missing or unreachable CS,提示没有代码段,然后我把assume cs:code
code segment换了一下位置,code segment放最前边 assume cs:code 编译就没有错误了,我是哪里小问题晕了吗?编译过了,运行什么显示都没有,应该显示一堆aaaa啊
没细看,但是我粘贴楼主的代码,编译是通过的,字符我也看到了
一个字都没改,也许楼主在无意中解决了问题 不知道对不对:第二步si初始化可能出问题,你确定数据地址为202h么。建议在数据地址做的标号,然后 mov si,offset 标号。 混鱼币
混鱼币
混鱼币
混鱼币
混鱼币 混鱼币:lol::lol::lol::lol::lol::lol: 问题在于,我在mac 10.10下写的代码,拿到win xp下运行的,里边参杂了很多别东西,所以乱七八糟了
页:
[1]