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

一种我认为新奇的写法

热心网友 发布于 2020-07-21 09:46, 5169 次点击
程序代码:

.model tiny                           
.stack                                 ;栈段
.data                                  ;数据段
    Hello    db    'Hello World!','$'
.code                                  ;代码段
start:
org 100h
jmp    Main
org 103h
Print    Macro    Str
        Mov     ax,     data               ;但这句会报错,显示"Improper operand type :DATA",我该怎样将.data段变成数据段呢?
        Mov     ds,     ax
        lea    dx,    Str
    call        DisplayStr
    endm
Main:
    Print Hello

    Mov    ax,    04c00h
    int        21h
DisplayStr:
    Mov    ah,    9h
    int        21h
    ret
end start


如果直接写:
Mov ax, data
会报错,但不写的话会成这样:
只有本站会员才能查看附件,请 登录

我该怎么修改,难道只能用普遍的写法吗?
5 回复
#2
热心网友2020-07-21 14:03
我知道了,应该把Mov ax,data改成Mov ax,@data
#3
Valenciax2020-07-21 16:30
自行debug,很好.
#4
热心网友2020-07-22 07:30
我是不知道语法
#5
Valenciax2020-07-22 14:01
嗯,看了一下,写法怪怪的,tiny不是这个场合用,应该是small, org 之类也不必.
可以简化这样:
程序代码:

.model small               
Print    Macro    Str
        Mov     ax,@data
        Mov     ds,ax
        lea        dx,Str
        call    DisplayStr
        endm   
.stack                                 ;栈段
.data                                  ;数据段
    Hello    db    'Hello World!','$'
.code                                  ;代码段
start:
    Print    Hello
    Mov        ax,04c00h
    int        21h
DisplayStr:
    Mov        ah,9h
    int        21h
    ret
end start


[此贴子已经被作者于2020-7-22 14:02编辑过]

#6
热心网友2020-07-22 14:56
第一次用,写的很简陋
1