**处理字符问题**
![](https://img.kancloud.cn/ca/3e/ca3e9cf21bf7f0247a92f8968ff5634d_1854x979.png)
`db 'unlx'`相当于"db 75H,6EH,49H,S8H" , "u"、"n"、"1"、"X"的ASCI1别为75H、 6EH,49H, 58H;
`db 'оRK'`相当于"db 66H,6FH,S2H,4BH" , "f"、"0"、"R"、“K"的ASC1分别为66H、 6FH, 52H,4BH;
编译器会将字符转化为ASCII码
`mov al,'a'`在汇编中识别为`mov 61`
数据段为什么是从076A开始的?
《汇编语言》(第二版)P104页,上面写着参考4.9节内容。原因大致如下: 设找到一段起始地址为 SA:0000 的容量足够的空闲内存区;在这段内存区的前256个字节中,创建一个称谓程序段前缀(PSP)的数据区,DOS要利用PSP来和被加载程序进行通信(不理解的话可以暂且记住);在这段内存区的256字节处开始(在PSP的后面),将程序装入,程序的地址被设为SA+10H:0(这里确实是256个字节即100H,256 = 16*16,所以会空出100H 的空间,也就是10:0H,“写法可能不对,暂且这么理解”);将这段内存区的段地址存入ds中,初始化其他相关的寄存器后,设置CSIP指向程序的入口
![](https://img.kancloud.cn/a9/0e/a90eadaf8ad4ca311cbf88b4010fdd1b_616x419.png)
**大小写转换**
![](https://img.kancloud.cn/28/d8/28d8cdb1c8cd0ebeb3643430644d63ed_1843x926.png)
![](https://img.kancloud.cn/9c/c9/9cc95228419c14ad4b8eb2ce0907f135_1512x982.png)
大写字母 = 小写字母 and 1101 1111 //其他位数保持不变,第6位从1变成0
小写字母 = 大写字母 or 0010 0000 //其他位数保持不变,第6位从0变成1
![](https://img.kancloud.cn/8a/af/8aafa03e80e70c72492954b2c04bbd8a_1554x953.png)
改进版查看[bx+idata]方式寻址章节
```
```