汇编语言中的位、标志、分支、表及字符翻译
1. 寄存器使用建议
在编写代码时,尽量使用 32 位寄存器,这通常能让代码运行得更快。不过,偶尔使用 16 位或 8 位寄存器引用,一般不会对性能产生巨大影响,除非是在某些特定情况(如紧密循环中)。而且,即便在这些特定情况下,性能损失也很难预测和量化。简单来说,能使用 32 位寄存器就用,但不必为此过于纠结。
2. 字符表翻译
在早期,字符集转换是常见需求,例如将所有小写字符转换为大写字符。简单的字符转换可以依据 ASCII 表,通过减去特定值(如 32,即 20h)来实现。但对于一些特殊的转换需求,如将所有“竖线”(ASCII 124)字符转换为感叹号,使用特殊代码处理每个单独的情况会很繁琐,这时可以使用翻译表。
3. 翻译表的工作原理
翻译表是一种特殊的表,其工作方式如下:
- 建立一个值表,为每个需要翻译的可能值设置一个条目。
- 使用一个数字(或作为数字处理的字符)作为表的索引。
- 在表的索引位置找到一个值,该值用于替换作为索引的原始值,从而将旧值翻译为新值。
例如,在 hexdump1.asm 程序中的 Digits 表:
Digits: db “0123456789ABCDEF“
这个表用于将 4 位值转换为表示十六进制数字的 ASCII 字符。转换通过以下三条指令完成:
mov al,byte [esi+ecx]
; Put a byte
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



