常见的汇编语言错误:
序列
出错原因
错误举例   
补充说明   
1.
两个操作数的类型不一致
MOV AL,0510H
对于存储器单元与立即数同时作为操作数的情况,必须显式指明,byte ptr等;
2.
两个操作数不能都是存储器
MOV [1000H],[2000H]
串操作指令除外
3.
指令指针不能作为源/目的操作数
MOV IP,2
4.
段寄存器的操作有一些限制:
A.不允许立即数传送给段寄存器
B.不允许直接改变CS
C.不允许段寄存器之间的直接数据传送
MOV DS,100H
MOV CS,[BP]
MOV DS,ES
5.
移位指令的操作数问题,当移位位数大于1时要采用CL寄存器
SAL AX,2
可能存在某些编译器支持错误举例当中的语句,但是标准汇编是不能这样操作的
6.
堆栈操作是以字为单位
PUSH AL
7.
乘法操作的一个操作数总是隐藏在AL/AX
MUL AX,10
8.
乘法操作的被除数总是隐藏在AXDXAX
DIV BX,10
9.
条件转移和循环指令只能实现段内转移;无条件转移和过程调用/返回既可以是段内,也可以是段间
()
10.
I/O操作指令读取16位数据是需要考虑都是从哪个端口读取的数据
IN AX,PORT
;AX<=(PORT+1:PORT)
;而不是AX<=PORT汇编语言清华大学出版社
11.
12.
推荐书籍和软件:
1.IBM PC汇编语言程序设计》作者:沈美明 温冬婵/编著 出版社:清华大学出版社
以前学习汇编必备的一本书,相当不错。
2.《Intel汇编语言程序设计(第四版)》作者:[]Kip R.Irvine 译者:温玉杰 张家生 罗云彬  针对Intel系列写的比较全面,翻译的人也不错,作为参考资料应该不错
3Win32下的汇编书籍罗云彬写的《Windows环境下32位汇编语言程序设计》,32位环境下的汇编开发必备书
3Emu8086开发环境(提供一些简单例子,并有单步执行和虚拟视窗模拟输入输出,比较直观)
4.简单的编译环境(Microsoft公司的,Windows自带的Debug.Exe调试)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。