欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

汇编语言—更灵活的定位内存地址的方法

程序员文章站 2022-04-02 11:25:32
一、and和or指令(1)and指令:逻辑与指令,按位进行与运算。该指令可将操作对象的相应位设为0,其他位不变。例如:mov al,01100011Band al,00111011B执行后:al=00100011B(2)or指令:...

一、and和or指令
(1)and指令:逻辑与指令,按位进行与运算。该指令可将操作对象的相应位设为0,其他位不变。
例如:
mov al,01100011B
and al,00111011B
执行后:al=00100011B

(2)or指令:逻辑或指令,按位进行或运算。该指令可将操作对象的相应位设为1,其他位不变。
例如:
mov al,01100011B
or al,00111011B
执行后:al=01111011B
案例:大小写转换问题(不用判断指令)
汇编语言—更灵活的定位内存地址的方法

分析:从ASCLL码的二进制形式来看,除第五位(位数从0开始计算)外,大写字母和小写字母的其他各位都一样。大写字母ASCLL码的第五位为0,小写字母的ASCLL的第五位为1。这样,我们就可以,对一个字母无论是大写还是小写,将它的第五位,置为0,它就必将变为大写字母,第五位,置为1,它就必将变为小写字母。完整代码如下:
汇编语言—更灵活的定位内存地址的方法

二、ASCLL码
一个文本编辑过程中,就包含着按照ASCLL编码规则进行的编码和解码。在文本编辑过程中,我们按一下键盘中的a键,就会在屏幕中看到‘a’。为什么会这样呢?我们按下键盘的a键,这个键的信息被送入计算机,计算机用ASCLL码的规则对其进行编码,将其转化为61H存储在内存的指定空间中;文本编辑软件从内存中取出61H,将其送到显卡的显存中;工作在文本模式下的显卡,用ASCLL码的规则解释显存中的内容,61H被当作字符"a",显卡驱动显示器,将字符“a”的图像画在屏幕上。
三、以字符形式给出的数据
我们可以在汇编程序中,用’…'的方式指明数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCLL码。汇编语言—更灵活的定位内存地址的方法
上面的源程序中
‘u’、‘n’、‘I’、'X’的ASCLL码分别为75H、6EH、49H、58H,所以“db ‘unIX’”相当于“db 75h,6eh,49h,58h”。
同理“db ‘foRK’”相当于“db 66h,6fh,52h,4bh”。
将程序编译连接后,用debug查看data段的内容,如图汇编语言—更灵活的定位内存地址的方法用r命令分析data段的地址,“ds=0b2d”,所以程序从0b3dh段开始,这里说的程序开始的地方是start所指地方,程序从这里开始,程序第一段仍为数据段,所以段地址为0B3dh。
用d命令查看data段,debug以十六制数码和ASCLL码的形式显示出内容,从中可以看出data段中的每个数据所对应的ASCLL字符。
四、[bx+idata]
可以灵活的用[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata(bx中的数值加上idata)

本文地址:https://blog.csdn.net/qq_46180905/article/details/108991502

相关标签: 笔记