汇编网首页登录博客注册
byzero的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
好友圈
文章收藏
友情链接

[2010-07-20 10:27] 汇编语言——第九天

1.and和or指令
(1)and指令:逻辑与指令,按位进行与运算

 mov al,01100011B
 add al,00111011B
执行后:al=00100011B
通过该指令可将操作对象的相应位设为0,其他位不变
(2)or指令:逻辑或指令,按位进行或运算。语言语言地汇编语言回避那前34

 mov al,01100011B
 or al,00111011B
执行后:al=01111011B
通过该指令可将操作对象的相应位设为1,其他位不变。
2.关于ASCII码
    ASCII编码,是在计算机中通常被采用的。简单地说,所谓编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。一般规则需要人们遵守才有意义。
3.以字符形式给出的数据
    我们可以在汇编程序中,用‘………’的方式指明数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCII码。
4.大小写转换的问题
    通过对比,我们可以知道,小写字母的ASCII码比大写字母的ASCII码值大20H。这样,我们可以想到,如果将“a”的ASCII码值减去20H,就可以得到“A”;如果将“A”的ASCII码值加上20H就可以得到“a”。
    但是判断将用到的一些我们目前还没有学习到的指令。如果用已学的指令那如何解决这个问题呢?再重新观察,我们可以知道,就ASCII码的二进制来看,大写字母的ASCII码的第5位位0,小写字母的第5位位1。这样我们就有了新的方法,一个字母,不用管原来是小写还是大写,将他的第5位置0,它就必将成我大写字母。那么如何置0或置1呢?当然是用刚刚学习的and和or指令了。
如and al,11011111B 将al中ASCII码第5个位置置0,变为大写字幕;or al,00100000 将al中的ASCII码的第5位置位0,变为小写字母。
5.[bx+idata]
    在前面,我们用[bx]的方式来指明一个内存单元,还可以用一种更为灵活的方式来之指明内存单元:[bx+idata]表示一个内存单元 ,它的偏移地址位(bx)+idata(bx中的数值加上idata)
6.用[bx+idata]的方式进行数组的处理
    有了[bx+idata]这种表示内存单元的方式,我们就可以用更高级的结构来看待所要处理的问题。具体表述方式见书本例题。
7.SI和DI
    SI和DI是8086CPU中和BX功能相近的寄存器,si和di不能够分成两个8位的寄存器来使用。
8.[bx+si]和[bx+di]
    在前面,我们用[bx(si或di)]和[bx(si或di)+idata]的方式来指明一个内存单元,我们还可以用更为灵活的方式:[bx+si]和[bx+di]。
9.[bx+si+idata]和[bx+di+idata]
使用方法相似,详见课本
10.不同的寻址方式的灵活应用
    如果我们比较以下前面用到的几种定位内存地址的方法(可称为寻址方式),就可以发现
    (1)[idata]永一个常量来表示地址,可用于直接定位一个内存单元;
    (2)[bx]永一个变量来表示内存地址,可用于间接定位一个内存单元;
    (3)[bx+idata]永一个变量和常量表示地址,可在一个起始地址的基础上永变量间接定位一个内存单元;
    (4)[bx+si]永两个变量表示地址
    (5)[bx+si+idata]用两个变量和一个常量表示地址。
    可以看到,从[idata]一直到[bx+si+idta],我们可以永更加灵活的方式来定位一个内存单元的地址。这是我们可以从更加结构化的角度来看待所要处理的数据。
评论次数(1)  |  浏览次数(1467)  |  类型(汇编笔记) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码