汇编语言8086指令源操作数与目的操作数的寻址方式

2024-12-30 09:36:58
推荐回答(4个)
回答1:

记得当初自己学8086寻址时很轻松,大概是因为我C的基础还可以(指针部分我很自信)。所以呢,如果你没有学过C语言的话,还是先学好C吧。看看《C primer plus》,再看看《C和指针》,《C陷阱与缺陷》,接着看汇编,看王爽的《汇编语言》(8086汇编),接着杨季文的《80x86汇编语言程序设计》(重点是dos下80386保护模式汇编),如果对汇编实在感兴趣,看罗云彬的《Windows环境下32位汇编语言程序设计》。

回答2:

寻址方式不要直接记,要理解。
无外乎三种操作数: 立即数的(例如12h),寄存器的(AX,ES。。),间接的(加了括号[BX])。
实际的寻址就是这几个互相组合,所要注意的是目的操作数的寻址是受限的,也就是说没有源的方式多,有些方式不能用,例如立即数的时候你不能 MOV 12H,AL。但是可以MOV AL,12H

回答3:

多读,多看,多思,多写。

回答4:

计算机中的操作数有三类:立即数(常数)、寄存器操作数、存储器操作数,所以寻址方式就是针对这三类操作数进行的。
立即数和寄存器操作数的寻址比较简单,对应的是立即寻址和寄存器寻址,比较多的是存储器寻址方式,有直接寻址(指令中可以看到内存的地址)、寄存器间接寻址(寄存器的内容作为内存的地址),从寄存器间接寻址进一步发展就有:相对寄存器寻址、基址变址寻址和相对基址变址寻址。
寻址格式中,加方括号的是地址,没加方括号的是操作数,比如:2000H是立即数,[2000H]是内存的地址;BX是寄存器BX里面的数据,[BX]是BX的数据作地址。
1、MOV ES,AX 都是寄存器寻址
2、ADD DS:[12H],AL 源:寄存器寻址 目的:直接寻址
3、SUB BX,1200H 源:立即寻址 目的:寄存器寻址
4、SHR AX,1 源:立即寻址 目的:寄存器寻址
5、MOV CX.LAB1[BX] 源:相对寄存器寻址 目的:寄存器寻址
6、SBB AX,[BX] 源:寄存器间接寻址 目的:寄存器寻址
7、OR DX,-360H[SI] 源:相对寄存器寻址 目的:寄存器寻址
8、ADC VAR1,CX 源:寄存器寻址 目的:直接寻址
9、XOR [DI],AX 源:寄存器寻址 目的:寄存器间接寻址