为什么在nasm中mov指令往内存移数据只能按字的方式
为了对比写了如下指令
%define drive bp+24h
mov [drive],dl
mov dl,[drive]
mov [drive],dx
mov [0x7c24],dl
mov dl,[0x7c24]
mov [0x7c24],dx
mov dx,[0x7c24]
反汇编生成的代码变成
00007c49: ( ): mov dl, byte ptr ss:[bp+0x24] ; 885624
00007c4c: ( ): mov dl, byte ptr ss:[bp+0x24] ; 8a5624
00007c4f: ( ): mov word ptr ss:[bp+0x24], dx ; 895624
00007c52: ( ): mov dl, byte ptr [ds:0x7c24] ; 8816247c
00007c56: ( ): mov dl, byte ptr [ds:0x7c24] ; 8a16247c
00007c5a: ( ): mov word ptr [ds:0x7c24], dx ; 8916247c
00007c5e: ( ): mov dx, word ptr [ds:0x7c24] ; 8b16247c
也就是说mov从内存移往寄存器必须按字,而从内存往寄存器移则可以按字节可以按字,这是为什么?