【汇编语言】七种寻址方式与运算指令学习笔记

365平台被黑 📅 2025-07-21 10:17:21 👤 admin 👁️ 5501 ❤️ 780
【汇编语言】七种寻址方式与运算指令学习笔记

前言

本文章纯粹用于记录我自己在学习汇编语言中记录的笔记

文章中可能会存在许多错误或混淆的地方,欢迎大家指出

也请各位大佬多多包涵

===================================================================

七种寻址方式

1.立即数寻址【特点:操作数在指令中,作为指令的一部分 跟在操作码后存放在代码段

assume cs:code

code segment

start:

mov ax,1111h

其中 111h则为立即数

code ends

end start

2.寄存器寻址

说明:操作数在寄存器中,在硬编码中指定的是寄存器的编号

如 mov ax,bx

这里的bx则表示的是寄存器

3.直接寻址方式

说明:操作数在内存中,指令直接包含操作数的有效地址

如:[bp+4]

注释:[]的作用是取里面的值

如cs:[1000]

就是取cs段加上1000offet的地址上面的值

mov ax,cs:[0h]就是直接寻址

4.寄存器间接寻址

说明:操作数在内存中 但是操作数的地址在SI,DI,BX,BP这四个寄存器之一中

mov bx,0

mov ax,[bx]

先利用BX寄存器存有效地址 然后再取出它的值最后将取出的值赋值给其他寄存器

注释:

SI DI BX 默认值是DS段

BP是SS段

5.寄存器相对寻址

说明:操作数是存在内存中的,操作数的地址是通过一个基址

寄存器或者变址寄存器加上偏移找到的

`code segment

radd proc

push bp

mov bp,sp

mov si,[bp+4]

mov di,[bp+6]

【重要的是上两行,是通过bp寄存器地址上下来找到的】

add si,di

mov ax,si

pop bp

radd endp

start:

mov ax,4

mov bx,5

push ax

push bx

call radd`

补充:基址寄存器有BP和BX

变址寄存器有SI和DI

6.基址加变址寻址

说明:操作数在内存中,操作数的有效地址是一个基址寄存器加上变址寄存器的内容,如果有BP,默认段为SS段,否则默认为DS段

mov bx,0

mov si,0

mov ax,[bx+si]

7.相对基址加变址寻址

说明:操作数在内存中,操作数的有效地址是一个基址寄存器和变址寄存器再加上偏移量

mov bx,0

mov si,0

mov ax[bx+si+2]

1.算数运算

inc 自增

dec 自减

add 加法

sub 减法

mul 无符号乘法

imul 有符号乘法

div 无符号除法

idiv 有符号除法

mul

mul 乘法只有一个操作数

mul oprd

oprd放的是被乘数

如

mov ax,10

mov bx,20

mul bx

bx的值为10乘20

ax被通常用为寄存乘数的地方

div

ax被用为寄存除数且用为寄存结果的地方

而DX则被用为寄存余数

位运算

and 与 相同为1 不同为0

or 或 一侧为1 均为1

not 非 原为1 现为0 原为0 现为1

xor 异或 不同为1 相同为0

shl 左移

shr 右移

相关推荐

多月的劳务报酬在一个月内分次支付怎么算个税
mobile365bet365com

多月的劳务报酬在一个月内分次支付怎么算个税

📅 06-29 👁️ 9978
全球通收费标准 – 全球通套餐收费指南:2025年最新版这样选不踩坑
淘宝订单险是什么及哪里交入口
365平台被黑

淘宝订单险是什么及哪里交入口

📅 07-04 👁️ 3925