汇编语言-寻址和处理数据
程序员文章站
2022-03-10 11:53:07
...
and和or指令
-
and 指令:逻辑与指令,按位进行与运算。
- 例如:and al,11111110B ;将al的第0位设为0。
-
or 指令:逻辑或指令,按位进行或运算。
- 例如:or al,00000001B ;将al的第0位设为1。
ASCll码
ASCLL码就是一种编码方案所谓编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。比如说,我们按下键盘的 a 键,这个按键的信息被送入计算机,计算机用ASCLL码的规则对其进行编码,将其转化为61H存储在内存的指定空间中;文本编辑软件从内存中取出61H,将其送到显卡上的显存中;工作在文本模式下的显卡,用ASCLL码的规则解释显存中的内容,61H被当作字符 “a“,显卡驱动显示器,将字符 ”a“ 的图像画在屏幕上。
bx, si, di 和 bp
在8086CPU中,只有4个寄存器可以中在 […] 中来进行内存单元的寻址。
比如下面的指令都是正确的:
mov ax,[bx]
mov ax,[bx+si]
mov ax,[bx+di]
mov ax,[bp]
mov ax,[bp+si]
mov ax,[bp+di]
而下面的指令是错误的:
mov ax,[cx]
mov ax,[ax]
mov ax,[dx]
mov ax,[ds]
在 […] 中,这4个寄存器可以单个出现,或只能以4种组合出现:bx 和 si, bx 和 di,bp 和 si,bp 和 di。比如下面的指令是正确的:
mov ax,[bx]
mov ax,[si]
mov ax,[di]
mov ax,[bp]
mov ax,[bx+si]
mov ax,[bx+di]
mov ax,[bp+si]
mov ax,[bp+di]
mov ax,[bx+si+idata]
mov ax.[bx+di+idata]
mov ax,[bp+si+idata]
mov ax,[bp+di+idata]
下面的指令是错误的:
mov ax,[bx+bp]
mov ax,[si+di]
只要在 […] 中使用寄存器 bp,而指令中没有显性地给出段地址,段地址就默认在 ss 中。比如下面地址:
mov ax,[bp+si+idata] 含义:(ax)=((ss)*16+(bp)+(bp)+(si)+idata)
寻址方式
段地址(SA),偏移地址(EA)
-
直接寻址:
- [idata]:EA=idata;SA=(ds)
- 常用格式 [idata]
-
寄存器间接寻址
- [bx],[si],[di],[bp]
- EA=(bx);SA=(ds)
- 常用格式 [bx]
-
寄存器相对寻址
- [bx+idata],[si+idata],[di+idata],[bp+idata]
- EA=(bx)+idata;SA=(ds)
- 结构体常用 [bx].idata
- 数组常用 idata[si],idata[di]
- 二维数组常用 [bx][idata]
-
基址变址寻址
- [bx+si],[bx+di],[bp+si],[bp+di]
- EA=(bx)+(si);SA=(ds)
- 二维数组常用 [bx][si]
-
相对基址变址寻址
- [bx+si+diata],[bx+di+idata],[bp+si+idata],[bp+di+idata]
- EA=(bx)+(si)+idata; SA=(ds)
- 表格(结构)中的数组项常用 [bx].idata[si]
- 二维数组常用 idata[bx][si]
指令处理数据大小和div,dd,dup
- 指令处理数据大小
- word ptr: 按字单元
- byte ptr: 按字节单元
- div指令
- div是除法指令,使用div做除法的时候应注意以下问题。
- 除数:有8位和16位两种,在一个寄存器或内存单元中。
- 被除数: 默认放在AX或DX和AX中,如果除数为8位,被除数则为16为,默认在AX中存放:如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。
- 结果: 如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。
- 伪指令 dd
- dd 是用来定义 dword(double word,双字)型数据的。
- dup
- dup 是一个操作符,它是和db,dw,dd 等数据定义伪指令配合使用的,用来进行数据的重复。
- 比如:db 2 dup (0,1,2) ;定义了6个字节,它们是0,1,2,0,1,2
上一篇: 【汇编程序】编写一个完整的程序 将这3个数的最大者存放到MAX单元
下一篇: 汇编程序:已知ARRAY数组中有8个无符号字节数据,编写完整的汇编语言程序 ;将ARRAY数组中的最大值放入MAX单元中
推荐阅读
-
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
-
mysql 使用inet_aton和inet_ntoa处理ip地址数据的实例
-
西部数据发布免费RISC-V内核SweRV处理器:何时能替代ARM和x86?
-
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
-
sql中循环处理当前行数据和上一行数据相加减
-
Extjs4如何处理后台json数据中日期和时间
-
MySQL数据库文本处理函数、常用日期和时间处理函数、数值处理函数讲解
-
美国军方寻求大数据处理软件和动态可视化系统
-
C语言基础篇-数据类型(一)gcc编译和预处理
-
Python中FIR滤波和STFT滤波对比(MNE脑电数据处理)