编译出了问题具体请看代码
data segmenttime: db 'yy/mm/dd hh:mm:ss','$'
table: db 9,8,7,4,2,0
data ends
编译的时候 先用masm编译然后用link链接没有问题 但用ML编译链接就会出现
将里面的冒号去掉就没有问题了 如果将上面的第二行和第三行代码放在code segment 里面有冒号没有问题
反正放入data段就不要加冒号了,那只是编译器的原因吧,不用纠结 6.15版本的语法本来就有问题 那个冒号是加的对 还是不加的对呢 兄弟,我没有见过在数据定义字段要用标号的。可能是我见识浅漏吧。如果你认为数字符不方便,可以0字符尾,代码段中加入条件判断转移指令(jcxz)就可以了,不必那么麻烦。 lyoal 发表于 2012-12-17 22:51 static/image/common/back.gif
兄弟,我没有见过在数据定义字段要用标号的。可能是我见识浅漏吧。如果你认为数字符不方便,可以0字符尾,代 ...
这个是实验14里面的代码,我以前也没有用过 wawa 发表于 2012-12-18 08:58 static/image/common/back.gif
这个是实验14里面的代码,我以前也没有用过
兄弟,你强大,进度好快。记得你第一个问题好像前几章,现在已经进入十四章了。历害,我现在才到十三章。来帮我解决个问题:
assume cs:code
code segment
start: mov ax,cs ;定义复制源
mov ds,ax
mov si,offset sub0
mov ax,0 ;定义复制目的地址
mov es,ax
mov di,200h
mov cx,offset ok - offset sub0
cld ;复制方向
rep movsb
mov ax,0 ;设置中断向量
mov es,ax
mov word ptr es:,200h
mov word ptr es:,0h
;测试一下
int 7ch
mov ax,4c00h
int 21h
sub0: jmp short s
db "Weclome to masm!",0
s: mov ax,0b800h
mov es,ax
mov di,12*160+36*2
mov ax,cs
mov ds,ax
mov si,202h
mov al,02h
s0: mov ch,0
mov cl,ds:
jcxz short ok
mov byte ptr es:,cl
mov byte ptr es:,al
inc si
add di,2
jmp short s0
mov ax,4c00h
int 21h
ok: nop
iret
code ends
end start
这个老运行错误,以我的水平实在是找不到原因在那里。牛人帮忙指点一下 lyoal 发表于 2012-12-18 13:16 static/image/common/back.gif
兄弟,你强大,进度好快。记得你第一个问题好像前几章,现在已经进入十四章了。历害,我现在才到十三章。 ...
安装程序有错误,少安装了几个代码
mov cx,offset ok - offset sub0 改成 mov cx,offset subend - offset sub0
在iret下面加一个 subend: nop
最近工作不忙,就囫囵吞枣的多看了一些,我不是大牛,很想成为,但水平不够 :'(,我真够蠢的,眼神肯定有问题。我比对的是我自己的代码,代码中最后没有IRET代码。纠结!非常感谢,以后请多指教! lyoal 发表于 2012-12-18 17:34 static/image/common/back.gif
,我真够蠢的,眼神肯定有问题。我比对的是我自己的代码,代码中最后没有IRET代码。纠结!非常感谢,以后 ...
一起学习,共同进步 wawa 发表于 2012-12-18 19:58 static/image/common/back.gif
一起学习,共同进步
再次求助一下,十三章的一个例题,一直还是搞不懂,没办法智商就这么高了。朋友帮忙看一下,问题在那里?再次表示感谢!
assume cs:code
code segment
start:
;===============中断处理程序=========================================
mov ax,0 ;安装中断处理程序
mov es,ax
mov di,200h
mov ax,cs
mov ds,ax
mov cx,offset s1end - offset s1 ;传送数据所用到的偏移地址
cld ;数据传送方向
rep movsb ;开始传送数据
mov ax,0 ;定义中断向量
mov es,ax
mov word ptr es:,200h ;程序入口偏移地址
mov word ptr es:,0 ;程序入口段地址
;============以下为主程序================================================
mov ax,0b800h ;定义显存位置
mov es,ax
mov di,160*12
mov bx,offset s - offset send
mov cx,80
s: mov byte ptr es:,'!' ;执行程序
mov byte ptr es:,41h
add di,2
int 7ch ;中断7ch,调用中断处理程序
mov ax,4c00h
int 21h
send: nop
;============需要安装的处理程序============================================
s1: push bp
mov bp,sp
dec cx
jcxz ok
add ,bx
;这个是地方是不是要加一条指令,使cpu指向s标号处执行循环呢?
ok: pop bp
iret
s1end: nop
code ends
end start
lyoal 发表于 2012-12-19 00:14 static/image/common/back.gif
再次求助一下,十三章的一个例题,一直还是搞不懂,没办法智商就这么高了。朋友帮忙看一下,问题在那里? ...
第九行和第十行就少了一条代码,mov si,offset s1end 你再编译看看,还有问题 我再帮你看 看到第16章第289页知道了当初是否加冒号的问题所在了,
书上原话为“在后面加有冒号的地址标号,只能在代码段中,不能在其它段中使用”
页:
[1]