8086汇编语言(灵活定位内存)

这篇博客介绍了8086汇编语言中如何通过位运算实现字符大小写的转换,并讲解了如何使用[bx+idata]方式灵活定位内存单元,以解决在处理大量数据时对寄存器的需求。示例程序演示了如何改变字符串的大小写,并引入了SI和DI寄存器用于数据段的复制操作。
摘要由CSDN通过智能技术生成
    把最近学的两章总结一起写了,这两章涉及的都是一个重点内容:如何灵活的定位内存,重点就在“灵活”两个字。学会灵活的定位内存,能提高编程的效率。因为许多编程语言在编译的时候,都会将代码首先转化成汇编指令。
    现在我们已经知道,我们可以用ds存放数据所存放地址的段地址,然后用[0]或者[bx]的方法,定位一个内存地址。接下来我们将引入其他的一些寄存器,以及寄存器与寄存器、寄存器与常数的结合灵活定位内存。
    首先认识两个新的指令:and & or
    and指令为逻辑与指令,按位进行与运算,逻辑与运算就是当数据双方的二进制位都为真的时候结果才为真,否则结果为假。
    mov al,01100011B
    and al,00111011B
    执行后:(al)= 00100011B
    or指令为逻辑或指令,按位进行或运算,当数据双反的二进制位只要有一方为真,其结果都为真。
    mov al,01100011B
    or al,00111011B
    执行后:(al)=01111011B

    以字符形式给出的数据:在计算机中通常采用一种编码方案——ASCII码,英语是世界上最广泛的语言这点不得不承认,并且计算机什么的大多都是米国搞出来的,所以ASCII码表才那么普遍,因为里面包含了数字、所有的英文字母和一些控制符,想一下包含了所有的英文字母和数字,就能表示一句完整的话了,扯远了···
    在ASCII编码方案中,用61H表示‘a’,62H表示‘b’,所有的字符都有规定的数值,一种规定需人们遵守才有意义。
    一个文本编辑过程中,就包含着按照ASCII编码进行的编码和解码,在文本编辑过程中,我们按一下键盘的a键,就会在屏幕上看到“a”,详细过程:我们按下键盘a键,这个按键的信息被送入计算机,计算机用ASCII码的规则对其进行编码,将其转化为61H存储在内存的指定空间中;文本编辑软件从内存中取出61H,将其送到显卡上的显存中;工作在文本模式下的显卡,用ASCII码的规则解释显存中的内容,61H被当作字符“a”,显卡驱动显示器,将字符“a”的图像画在屏幕上。我们可以看到,显卡在处理文本信息的时候,是按照ASCII码的规则进行的。这也就是说,如果我们要在显示器上看到“a”,就要给显卡提供“a”的ASCII码,将61H写入显存中。
    说点题外的,有人会有疑惑,ASCII编码方案总共就256个字符,那么我们博大精深的汉字怎么办?当然拉,我们中国作为人口最多的国家,这么大的市场老外肯定不会放过,所以就有了Unicode编码方案,这套方案主要有中日韩的文字,ASCII为8位编码方案,而Unicode为16位编码方案,我们平时在显示器上看到汉字,主要是用了Unicode这套编码方案。

    在汇编程序中,我们用单引号‘’的方式指明数据是以字符的形式给出的,编译器将把它们转化为相应的ASCII码,如下面的程序:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值