注册 登录
编程论坛 汇编论坛

编译无法通过,显示syntax error,按书上敲的呀

ehszt 发布于 2020-08-06 22:37, 6280 次点击
assume cs:code
code segment
    s1:  db 'Good,better,best,','$'
    s2:  db 'Never let it rest,','$'
    s3:  db 'Till good is better,','$'
    s4:  db 'And better,best.','$'
    s:   dw offset s1,offset s2,offset s3,offset s4
    row: db 2,4,6,8
   
    start:mov ax,cx
          mov ds,ax
          mov bx,offset s
          mov si,offset row
          mov cx,4
       ok:mov bh,0
          mov dh,byte ptr [si]
          mov dl,0
          mov ah,2
          int 10h
         
          mov dx,[bx]
          mov ah,9
          inc si
          add bx,2
          loop ok
          mov ax,4c00h
          int 21h
code ends
end start
4 回复
#2
Valenciax2020-08-07 05:46
masm 5.1可以通过
一般情况下,masm编译器不接受 '变量 :' ,或者,资料区不容许有标示地址(:)这种写法,去除冒号即可.

另外,通过编译并不表示运行正常或思路正确.

[此贴子已经被作者于2020-8-7 05:48编辑过]

#3
ehszt2020-08-07 22:49
改了半天,把cs写成cx硬是没查出来
assume cs:code
code segment
    s1  db 'Good,better,best,','$'
    s2  db 'Never let it rest,','$'
    s3  db 'Till good is better,','$'
    s4  db 'And better,best.','$'
    s   dw offset s1,offset s2,offset s3,offset s4
    row db 2,4,6,8
   
    start:mov ax,cs
          mov ds,ax
          mov bx,offset s
          mov si,offset row
          mov cx,4
       ok:mov bh,0
          mov dh,[si]
          mov dl,0
          mov ah,2
          int 10h
         
          mov dx,[bx]
          mov ah,9
          int 21h
          inc si
          add bx,2
          loop ok
          mov ax,4c00h
          int 21h
code ends
end start
#4
Valenciax2020-08-08 19:51
延伸讨论....

关于显示字串,1楼用的是int21h,ah=9.其实bios也提供了一个int10h,ah=13h的功能,可以在任意座标显示一条颜色字串。

找一下,之前我在本论坛也贴了一个程式,利用这个函数,如何再配合鼠标如操作,楼主可以参考一下,附源码。
https://bbs.bccn.net/thread-466000-1-1.html

下面是程式示范
只有本站会员才能查看附件,请 登录
#5
ehszt2020-08-10 21:18
学完了《汇编语言》还是有很多指令没见过,比如版主程序里的lodsb,stosb,两个@@组成的地址标号,还有类似这个的跳转jz @f ,书上好像并没有。
还有楼上提到的程序里很多都看不懂,尤其是宏定义。
算了暂时不深究了,去学其他的课程去了。谢谢版主大神热心的讲解。
1