. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->汇编语言学习交流区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验11:letterc为什么在emu8086能调试成功,却用MASM不能编译??求原因!!!!  [已解决] 回复[ 5次 ]   点击[ 582次 ]  
arey2003
[帖 主]   [ 发表时间:2010-12-03 20:33 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:6
注册日期:2008-05-19 21:20
assume cs:codesg,ds:datasg

datasg segment
    db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends

codesg segment
  begin:mov ax,datasg
        mov ds,ax
        mov si,0
        call letterc

        mov ax,4c00h
        int 21h

letterc:                ;小写英文字母从a(61h)至z(7a)
        mov cl,ds:[si]     ;先判断字母区间[61h,7a],再做与操作
        mov ch,0
        jcxz return
        cmp cl,61h
        jb s0
        cmp cl,7ah
        ja s0
        and ds:[si],11011111b
    s0: inc si
        jmp letterc
return: ret

codesg ends
end begin
masmaster
[第1楼]   [ 回复时间:2010-12-03 20:51 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
and ds:[si],11011111b ----> and byte ptr ds:[si],11011111b
arey2003
[第2楼]   [ 回复时间:2010-12-03 22:40 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:6
注册日期:2008-05-19 21:20
为什么在emu8086中不用这个byte ptr也能调试,而用MASM却不能编译呢?问题出在我的这句语法错误吗?还是emu8086和MASM的工作原理上啊?还恳请masmaster老师进一步讲一讲啊~~!
arey2003
[第3楼]   [ 回复时间:2010-12-03 22:47 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:6
注册日期:2008-05-19 21:20
[si]十表示了一个字节,而11011111b也是一个字节,emu8086可以调试成功,为什么MASM不能呢?
arey2003
[第4楼]   [ 回复时间:2010-12-03 23:03 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:6
注册日期:2008-05-19 21:20
谢谢masmaster~!!!!!明白了~~~~!!
------------在没有寄存器参与的内存访问中必须显性的指出所访问的内存单元的长度!!!
arey2003
[第5楼]   [ 回复时间:2010-12-03 23:17 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:6
注册日期:2008-05-19 21:20
此贴由 贴主 于 [ 2010-12-03 23:17 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(masmaster):8分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved