| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
学了一部分小甲鱼老师的零基础学习汇编语言视频,在编程编译时发现一个问题,如下程序: 
assume cs:codesg,ds:datasg,ss:stacksg 
 
datasg segment 
        db '1. display      '      ;16个字节单元 
        db '2. brows        ' 
        db '3. replace      ' 
        db '4. modify       ' 
datasg ends 
 
stacksg segment 
        dw 0,0,0,0,0,0,0,0 
stacksg ends 
 
codesg segment 
        start:        mov ax,datasg 
                        mov ds,ax 
                        mov bx,0 
                        mov ax,stacksg 
                        mov ss,ax 
                        mov sp,16 
                         
                        mov cx,4  
                s0:        push cx 
                        mov si,0 
                        mov cx,4 
                s:        mov al,[bx+si+3] 
                        and al,11011111b 
                        mov [bx+si+3],al 
                        inc si 
                        loop s 
                         
                        add bx,16  
                        pop cx 
                        loop s0 
                         
                        mov ax,4c00h 
                        int 21h         
codesg ends 
end start 
如果把[bx+si+3]改成[bx+3+si]或者[3+bx+si]时,编译出错,怎么回事?是这种书写格式错误还是这种格式只能mov ax,[bx+3+si],不能mov al,[bx+3+si]  ?还是其他问题? 
迷惑ing........ 
 
你要写成这种形式:mov al,[bx+3+si]  吗? 
编译器不认识这种形式,你需要指定移动几个字节就行了, 
比如说改成 mov al,byte ptr[bx+3+si]就好了 
 
 
 |   
 
 
 
 |