一、易错语法点
1.立即数不能作为目的操作数,如mov 110H,AX
2.立即数不能直接传给段寄存器,如mov DS,110H // 翻译成机器码很长
2.两个操作数不能同时为段寄存器,如mov ES,DS // 可通过Ax寄存器间接传递
3.两个操作数不能同时为存储单元,如mov [0x1245],[0x1312] // 翻译成机器码很长
5.代码段寄存器CS不能为目的操作数,但可为源操作数 // CS为存放代码段的段地址,是代码段寄存器。它与IP共用,以指示下一条要执行的指令,不能随意更改!
6.指令指针IP不能作为mov指令的操作数
二、遇到这些问题时解决方法举例
MOV指令的变通方法
功能描述 |
不正确的指令 |
可选的解决方法 |
把DS的值传送给ES |
MOV ES, DS |
MOV AX, DS |
把100H传给DS |
MOV DS, 100H |
MOV AX, 100H |
把字变量VARB的值传送给字变量VARA |
MOV VARA, VARB |
MOV AX, VARB |