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

某道汇编习题

admin_xyz 发布于 2012-08-25 23:35, 1321 次点击
程序代码:
assume cs:code,ds:data,es:table

data segment

    db    '1975','1976','1977','1978','1979','1980','1981','1982','1983'
    db    '1984','1985','1986','1987','1988','1989','1990','1991','1992'
    db    '1993','1994','1995'

    dd    16,22,382,1356,2390,8000,16000,24486,50065,97497,140417,197514
    dd    345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

    dw    3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    dw    11542,14430,15257,17800

data ends

table segment

    db    21 dup ('yaar sumn ne ?? ')

table ends

code segment

start:

    mov        ax, data
    mov        ds, ax

    mov        ax, table
    mov        es, ax

    mov        bx, 0
    mov        si, 0
    mov        cx, 21        ;初始外循环次数

start0:

    mov        cx, 8
    mov        ax, ds:[bx]
    mov        word ptr es:[bx], ax
    add        bx, 2
    mov        ax, ds:[bx]
    mov        es:[bx], ax
    add        bx, 2
    mov        word ptr es:[bx], 20h                ;year and space

    add        bx, 1
    mov        ax, ds:[bx]
    mov            es:[bx], ax
    add        bx, 2
    mov         dx, ds:[bx]
    mov         es:[bx], dx
    add        bx, 2
    mov        word ptr es:[bx], 20h            ;earn  and space   


    add         bx, 1
    mov        si, ds:[bx]
    mov        es:[bx], si
    add        bx, 2
    mov        word ptr es:[bx], 20h        ;member and space   20h = ' '                             //这句报错。open parenthesis or bracket   想不明白 到底嘛意思            

    div        si                ;everyone 's money

    add        bx, 1
    mov        es:[bx], ax

    add        bx, 2
    add        bx, 1
   


loop start0

    mov        ax, 4c00h
    int        21h

end start

20 回复
#2
zklhp2012-08-25 23:36
膜拜大作 分全给我罢
#3
admin_xyz2012-08-25 23:41
想白要,没那么容易。哈哈
#4
zklhp2012-08-25 23:45
程序代码:

assume cs:code,ds:data,es:table

data segment

    db    '1975','1976','1977','1978','1979','1980','1981','1982','1983'
    db    '1984','1985','1986','1987','1988','1989','1990','1991','1992'
    db    '1993','1994','1995'

    dd    16,22,382,1356,2390,8000,16000,24486,50065,97497,140417,197514
    dd    345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

    dw    3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    dw    11542,14430,15257,17800

data ends

table segment

    db    21 dup ('yaar sumn ne ?? ')

table ends

code segment

start:

    mov        ax, data
    mov        ds, ax

    mov        ax, table
    mov        es, ax

    mov        bx, 0
    mov        si, 0
    mov        cx, 21        ;初始外循环次数

start0:

    mov        cx, 8
    mov        ax, ds:[bx]
    mov        word ptr es:[bx], ax
    add        bx, 2
    mov        ax, ds:[bx]
    mov        es:[bx], ax
    add        bx, 2
    mov        word ptr es:[bx], 20h                ;year and space

    add        bx, 1
    mov        ax, ds:[bx]
    mov            es:[bx], ax
    add        bx, 2
    mov         dx, ds:[bx]
    mov         es:[bx], dx
    add        bx, 2
    mov        word ptr es:[bx], 20h            ;earn  and space   


    add         bx, 1
    mov        si, ds:[bx]
    mov        es:[bx], si
    add        bx, 2
    mov        word ptr es:[bx], 20h        ;member and space   20h = ' '                             //这句报错。open parenthesis or bracket   想不明白 到底嘛意思            

    div        si                ;everyone 's money

    add        bx, 1
    mov        es:[bx], ax

    add        bx, 2
    add        bx, 1
   


loop start0

    mov        ax, 4c00h
    int        21h
code ends

end start


原来有错误啊 你不直接说写到注释了。。

以上的我能编译过 但对不对我就不知道了
#5
zklhp2012-08-25 23:47
主要是segment没配对 还有一个分号是中文分号

    mov        word ptr es:[bx], 20h            ;earn  and space  

你把代码贴到论坛里应该就能看出来 犯这种错误的一般是工具不行 好的编辑工具里面这些错误很明显 不可能看不见   
#6
admin_xyz2012-08-25 23:47
masm编译的。

severe error:

open parenthesis or bracket   
#7
zklhp2012-08-25 23:49
只有本站会员才能查看附件,请 登录
好的编辑器里面犯这种错误是很难的 因为很明显 如果你用工具不好 那。。。
#8
admin_xyz2012-08-25 23:50
shit...
#9
zklhp2012-08-25 23:51
只有本站会员才能查看附件,请 登录


这里也一样 很明显
#10
admin_xyz2012-08-25 23:52
不知道在code::blocks下能不能写汇编  ,在vim下写,代码很长,不好看,错误也难找。
#11
zklhp2012-08-25 23:56
如果你用的是记事本 扔了罢 别听神马高手忽悠了 linus这样的大牛写代码也得用语法高亮
#12
zklhp2012-08-26 00:01
工欲善其事 必先利其器 非常老套的一句话 但非常经典 好的工具能提高编程效率和学习效率 这不是假的
#13
有容就大2012-08-27 10:41
MASMPlus 还是比较好的一个编辑器
#14
pangding2012-08-28 21:13
以下是引用admin_xyz在2012-8-25 23:52:53的发言:

不知道在code::blocks下能不能写汇编  ,在vim下写,代码很长,不好看,错误也难找。

难道楼主的代码在 vim 里没有变色?
#15
admin_xyz2012-08-29 10:12
变了,但是很难看。自己改色改的也不好看。现在在code::blocks下写呢,超爽
#16
有容就大2012-08-29 10:14
Notepad++也不错
#17
zklhp2012-08-29 10:25
以下是引用有容就大在2012-8-29 10:14:31的发言:

Notepad++也不错

你不知道楼主喜欢用linux么 MASMPlus和这个都是win下的
#18
有容就大2012-08-29 12:42
回复 17楼 zklhp
丢人了啊
#19
pangding2012-08-30 00:38
以下是引用admin_xyz在2012-8-29 10:12:31的发言:

变了,但是很难看。自己改色改的也不好看。现在在code::blocks下写呢,超爽

不知道 code:blocks 里汇编代码染色是什么样子,不过我一直都是用 vim 看代码的。(如果不编译也可能用 emacs 看)

这是 windows 下 gvim 的默认配色。虽然在 windows 下我一直觉得 vim 的字体不是很好看,不过颜色我不讨厌。
只有本站会员才能查看附件,请 登录

#20
zklhp2012-08-30 08:48
以下是引用pangding在2012-8-30 00:38:52的发言:


不知道 code:blocks 里汇编代码染色是什么样子,不过我一直都是用 vim 看代码的。(如果不编译也可能用 emacs 看)

这是 windows 下 gvim 的默认配色。虽然在 windows 下我一直觉得 vim 的字体不是很好看,不过颜色我不讨厌。

默认配色比emacs的好

只有本站会员才能查看附件,请 登录


这个是默认的 比较难看了


[ 本帖最后由 zklhp 于 2012-8-30 08:51 编辑 ]
#21
有容就大2012-08-30 09:55
去下个瞧瞧
1