汇编语言学习笔记(七)更灵活的定位内存地址的方法
来源:互联网 发布:学英语发音软件 编辑:程序博客网 时间:2024/04/28 07:09
1.and or 指令
and逻辑与:同真为真
可以将操作对象的某一位设置为0 :
比如第六位:则and al,10111111B
or或运算:同假为假
可以将操作对象的某一位设置为1 :
比如第六位:则and al,01000000B
ASCII码中大小写转换:相差32为2的5次方。字节位置在第5位不同
可以利用上面的运算可以轻松的转换大小写
2.[bx+idata]:对偏移地址进行偏移操作
[bx+idata]=[idata+bx]=idata[bx]=[bx].idata
用[bx+idata]的方式进行数组的处理
可以用[0+bx]和[5+bx]的方式在同一个循环中定位两个字符串的第一个字符
处理数组:
c语言定位方式:a[i]
汇编语言定位方式:0[bx]
3.SI和DI
SI和DI和bx功能相近,只是不能分成两个8位寄存器来使用
也可以使用[si/di+idata]
常用ds:si指向复制的原始字符串
常用ds:di指向复制的目的空间
每次复制两个字节,因为si和di不能拆成两个字节
更灵活的方式:
[bx+si]和[bx+di]
偏移地址:(bx)+(si)
mov ax,[bx+si] = mov ax,[bx][si]
(ax)=((ds)*16+(bx)+(si))
[bx+si+idata]和[bx+di+idata]
双层循环:
start: mov cx,4
s0: mov si,0
mov cx,3
s: add al,110111111b
loop:s
add ah,001000000b
loop:s0
mov ax,4c00h
int 21h
双层循环时,内部的指数器覆盖了外层循环,会导致内存结束后,外层编程FFFF
需要每次先保存外层循环
s0:mov dx,cx
s:...
mov cx,dx
loop s0
但是寄存器又很可能被用到,所以需要定义个dw来保存cx的值
data segment
dw 0
data ends
s0:ds:[40H],cx
s:
...
loop s
mov cs,ds:[40H]
loop s0
但是有很麻烦,可以采用vc栈的做法(这个非常重要)
定义栈空间:
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg segment
s0:push cx
...
s:
...
loop s
pop cx
loop s0
0 0
- 汇编语言学习笔记(七)更灵活的定位内存地址的方法
- 汇编语言第七章学习笔记——更灵活的定位内存地址的方法
- 王爽《汇编语言》(第二版) 学习笔记 (第七章 更灵活的定位内存地址的方法 )
- 王爽《汇编语言》(第二版) 学习笔记 (第七章 更灵活的定位内存地址的方法 )
- 汇编语言学习第七章-更灵活的定位内存地址的方法
- [汇编语言学习笔记][第七章更灵活的定位内存的方法]
- <学习笔记>王爽汇编语言__更加灵活的定位内存地址的方法
- (7)更灵活的定位内存地址的方法
- 王爽《汇编语言》第7章 更灵活的定位内存地址的方法
- 《汇编语言》第二版 王爽著 第七章 更灵活的定位内存地址的方法 要点
- 【汇编语言/底层开发】7、更灵活的定位内存地址方法
- 王爽 《汇编语言》 读书笔记 七 更灵活段定位内存地址段方法
- 更灵活的定位内存地址的方法
- 汇编程序-更灵活的定位内存地址方法
- 第7章 更灵活的定位内存地址的方法 笔记
- 汇编语言学习笔记(7)——更灵活地定位内存
- 汇编语言06——更灵活定位内存地址
- 汇编语言学习——第七章 更灵活定位内存地址
- 【Linux】JDK+Eclipse 搭建C/C++开发环境
- Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: Connect
- C中函数指针的作用
- 加快工作效率的各种工具集--非常重要
- 大数阶乘
- 汇编语言学习笔记(七)更灵活的定位内存地址的方法
- C语言中函数指针的例子
- C++运算符重载探讨
- MAC实现的功能
- Struts2输入校验
- [Caffe] Caffe介绍
- 汇编语言学习笔记(八)数据处理的两个基本问题
- linux -- LTIB学习笔记
- hdu 3172Virtual Friends (map水过)