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

改变字母大小写问题

admin_xyz 发布于 2012-07-02 23:01, 822 次点击
程序代码:
assume cs:code

data segment

    db 'DEVELOPER'

data ends

code segment

start:

    mov    ax, data
    mov    ds, ax
   

    sub    bx, bx
    mov    cx, 9
s:

    sub    [bx], 32    ;编译的时候这错了,operand must have size,操作数必须有大小...这样写不对吗

loop s

    mov    ax, 4c00h
    int    21h

code ends

end start
10 回复
#2
admin_xyz2012-07-02 23:13
程序代码:
assume cs:code,ds:data;ds:data这句到底什么意思,现在还不理解,可加可不加,为什么....... 上一个问题继续求解

data segment

    db 'DEVELOPER'

data ends

code segment

start:

    mov    ax, data
    mov    ds, ax
   

    sub    bx, bx
    mov    cx, 9
s:

    mov    al, [bx]
    add    al, 32
    mov     [bx],al
   

    inc    bx

loop s

    mov    ax, 4c00h
    int    21h

code ends

end start
#3
zklhp2012-07-03 08:23
perand must have size,操作数必须有大小

写法有二意性 程序不知道你想干什么

sub    [bx], 32

可以理解为

sub byte ptr [bx], 32
sub word ptr [bx], 32
sub dword ptr [bx], 32

程序不知道要干什么 只能报错
#4
zklhp2012-07-03 08:24
后一个你先理解理解assume再看这个问题
#5
admin_xyz2012-07-03 15:36
    mov    al, [bx]
    add    al, 32
    mov     [bx],al
;其实我是想用一条指令就能代替上面这三条...额...有点异想天开了...
    sub    [bx], 32   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

sub byte ptr [bx], 32
sub word ptr [bx], 32
sub dword ptr [bx], 32    ;弱弱的问下 dword ptr 是什么...define word?   那ptr呢...


#6
aryh2012-07-03 22:47
sub dword ptr [bx], 32   ptr 指明指令访问的内存单元是一个双字
#7
于祥2012-07-03 23:00
回复 5楼 admin_xyz
额,我觉得你还是先看看基本概念,先搞懂那些在去试着编程序或者看程序,真的
#8
admin_xyz2012-07-03 23:43
刚刚接触汇编....有好多不懂的.大牛见谅。懂了. byte ptr 8位 , word ptr 16位, dword ptr 32位。
#9
zklhp2012-07-04 09:54
不懂可以查 可以看书嘛

要是10年前互联网不发达的时候查不到很正常 现在网上什么都能查出来 一个小小的知识点查不到么
#10
heliang62912012-07-04 23:06
对,先自己把基础知识看好,不要什么都问,需要问的是一些特殊的地方,基本概念就自己查看资料好了
#11
紫尘小奇2012-11-03 23:23
说得好 真的
1