更灵活的定位内存地址的方法
更灵活的定位内存地址的方法
汇编大小写转换
1 | assume cs:code,ds:data |
使用[bx+idata]的方法优化程序
1 | assume cs:code,ds:data |

SI AND DI
si和di不能分成2个8位寄存器,也就是不能进行mov al,[si] ,mov al,[di]这样的操作,下面写一个栗子~
1 | assume cs:codesm,ds:datasg |
上面的代码可以看出si,di递增为2 ,循环次数也缩短了一倍,用16位寄存器进行内存单元之间的数据传送一次复制2 个字节,一共循环八次。
再次优化:
1 | assume cs:codesm,ds:datasg |
将字符串头一个字母改为大写
1 | assume cs:codesg,ds:datasg |

嵌套循环(把datasg每个单词改为大写)
1 | assume cs:codesg,ds:datasg |
讲道理汇编的嵌套循环有点不习惯….
这只是2层嵌套 如果更多嵌套则寄存器不够用,这时候我们就不能用寄存器来暂存CX了
用栈来处理cx缓存问题
将datasg数据段每个单词前4个字幕改为大写
1 | assume cs:codesg,ds:datasg,ss:stacksg |

- 本文标题:更灵活的定位内存地址的方法
- 本文作者:Colorful_Ghost
- 创建时间:2017-08-21 12:01:00
- 本文链接:https://blog.iacg.moe/2017/08/21/灵活的定位内存地址/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论