《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 解决方案 > 汇编基础:进制转换和串的操作

汇编基础:进制转换和串的操作

2017-06-10
关键词: 汇编

代码转换是计算机应用中常见问题,计算机内部职能进行二进制的运算,而输入设备提供的是数和字符的ASCII码形式。所以必须把ASCII码形式表达的十进制数或其他进制数转换成二进制数。同样,当数据处理结束后,也需要进行相应的转换,将二进制码转换为输出需要的ASCII码或者十进制数给显示器。这一节我就说说关于进制的转换。

一、十六进制ASCII码与二进制数之间的转换

首先我们将十六个字符所在的区域分成 3部分,分别是区域1表示十六进制数中0--9之间的数字字符,区域2表示十六进制数中A--F之间的数字字符;区域3表示十六进制中的a--f之间的数字字符。

如果我们仔细观察过它们各自对应的ASCII码值和二进制值得话,我们不难会发现以下规律:

1、对于字符0--9的ASCII来说,其字符ASCII码的低4位与所表示的十六进制数相同,也就是ASCII码对应的二进制数的低4位,因此,对于区域1的十六进制ASCII码与二进制之间的转换,就是讲ASCII码的高4位加上或者去掉即可。

2、区域2中的字符A--F的ASCII码,其ASCII码减7后的二进制数的低4位与对应的二进制数低4位相同,因此可以用此方法得到二进制数的低4位,而高4位则可以通过加减30H得到

3、区域3中的字符a--f的ASCII码,其字符ASCII码减7后的二进制数低4位与对应的二进制数低4位相同,因此,可以用此方法得到二进制数的低4位, 而高4位则可以通过加减50H得到。

二、串的操作

串就是指存储器中一序列的字或字节单元,串操作就是对这一个序列字或者字节单元进行某种相同的操作,这一序列可能存放的是字符或者是数据。8086/8088指令系统中有5种串操作指令,下面我一一为大家列举:

1、取串指令LODS

指令格式:LODS源串

此指令把源串中的一个字或者字节内容送入到AX或者AL中,同时按照DF修改SI。由于源串的字符或者字节单元由SI锁指向,而指令中“源串”主要是指明取的源串是字还是字节,所以,当我们使用该指令的时候,如果已明确源串是字还是字节,那么可用下述3个无操作数的指令格式进行取代。

LODSB;取源串一个字节    
LODSW;取源串一个字    
LODSB指令可以替代下面的两条指令    
MOV AL, [SI];传送一个字节至AL    
INC SI;指向下一个字节

注:取指令操作是对标志寄存器无影响的。

2、存串指令STOS

指令格式:STOS目的串

此指令把AX或AL的内容送入目的串中的一个字或字节,同时按照DF修改DI,目的串的字或字节单元是由DI指定的,如果已明确目的串是字还是字节,我们依然可以像取串指令一样去用两个无操到目的串去代替

STOSB;送字节到目的串    
STOSW;送字到目的串

注:存串操作对标志寄存器无影响的。

3、串传送指令MOVS

指令格式:MOVS目的串, 源串

把源串中的一个字或字节传送到目的串中,同时按照DF修改SI和DI,由于传送字或字节单元的源串和目的串地址分别由SI和DI指向,如果已明确待传送的源串是字还是字节,那么可用下述两个无操作数指令格式替代:

MOVSB;字节传送    
MOVSW;字传送

注:串传送指令对标志寄存器无影响

4、串比较指令CMPS

指令格式:CMPS源串, 目的串

比较源串和目的串中一个字或字节。比较方法是:源串中一个字或者字节减去目的串中一个字或字节,不保留相减结果,但在标志寄存器中反映了比较结果,每比较一次,同时按照DF修改SI和DI,由于比较的字或字节单元地址已由SI和DI指向,如果已明确待比较的串是字或字节,那么可用下述两个无操作数的指令进行执行:

CMPSB;字节比较    
CMPSW;字比较

5、串搜索指令SCAS

指令格式:SCAS目的串

在目的串中查找AX和AL指定的内容,查找的方法是用AX或AL的内容减去目的串中的一个字或字节,相减的结果反映在标志寄存器中,每查找一次,按照DF修改DI。由于在查找的字或字节在AX/AL和DI所指向的存储单元,可以用无操作数指令代替:

SCASB;按字节查找目的串

SCASW;按字查找目的串

6、重复前缀指令REP

西陵格式:REP

我们为了对若干个字或字节进行相同的操作,可用重复前缀指令REP,它可以使串操作指令重复执行,重复的次数由CX的内容来确定,重复前缀指令使用时,只能放在串操作指令前面,每执行一次串操作指令,CX减1,知道CX=0为止。


本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。