汇编语言 程序设计
第 7章 非数值运算
非数值主要指的是数之外的数据,
它的操作主要是对数据进行处理,
如代码转换、字符处理、排序、检
索等。
7.1 串操作
7.2 表的处理
7.3 代码转换
汇编语言 程序设计
7.1 串操作
8086指令系统中的串操作指令共有以下
5条:串传送指令( MOVS)、串比较指令
( CMPS)、串扫描指令( SCAS)、从源
串取指令( LODS)和存入目的串指令
( STOS)。
1,串传送指令 MOVS
格式,MOVS DST,SRC
汇编语言 程序设计
MOVSB( 字节 )
MOVSW( 字 )
功能:
1( ES), ( DI) ← (( DS), ( SI))
2 当 DF=0时, ( SI) 和 ( DI) 加 1( 字节
操作 ) 或加 2( 字操作 ) 。
当 DF=1时, ( SI) 和 ( DI) 减 1( 字节
操作 ) 或减 2( 字操作 ) 。
MOVS指令不影响状态标志位 。
汇编语言 程序设计
2,串比较指令 ( CMPS)
格式,CMPS SRC,DST
CMPSB( 字节 )
CMPSW( 字 )
功能:
(1)(( DS), ( SI)) - (( ES), ( DI))
(2) 当 DF=0时, ( SI) 和 ( DI) 加 1( 字节
操作 ) 或加 2( 字操作 ) 。
当 DF=1时,( SI)和( DI)减 1(字节
操作)或减 2(字操作)。
汇编语言 程序设计
3,串搜索指令 ( SCAS)
格式,SCAS DST
SCASB( 字节 )
SCASW( 字 )
功能,( 1) ( AL) - (( ES), ( DI))
( 字节操作 )
( AX) - (( ES), ( DI)) ( 字操作 )
( 2) 当 DF=0时, ( DI) 加 1( 字节操作 )
或加 2( 字操作 ) 。
当 DF=1时, ( DI) 减 1( 字节操作 ) 或
减 2( 字 操作 ) 。
汇编语言 程序设计
4,从源串取指令 ( LODS)
格式,LODS SRC
LODSB( 字节 )
LODSW( 字 )
功能:
1 AL← (( DS), ( SI)) ( 字节操作 )
AX← (( DS), ( SI)) ( 字操作 )
2 当 DF=0时, ( SI) 加 1( 字节操作 ) 或加
2( 字操作 ) 。
当 DF=1时, ( SI) 减 1( 字节操作 ) 或减 2
( 字操作 ) 。
汇编语言 程序设计5,存入目的串指令 ( STOS)
格式,STOS DST
STOSB( 字节 )
STOS W( 字 )
功能:
1( ES), ( DI) ← ( AL) ( 字节操作 )
( ES), ( DI) ← ( AX) ( 字操作 )
2 当 DF=0时, ( DI) 加 1( 字节操作 ) 或加 2
( 字操作 ) 。
当 DF=1时,( DI)减 1(字节操作)或减 2
(字操作)。
汇编语言 程序设计
6,重复前缀
REP
CX≠ 0重复执行串操作指令
REPZ/REPE
CX≠ 0且 ZF= 1重复执行串操作指令
REPNZ/REPNE
CX≠ 0且 ZF= 0重复执行串操作指令
执行步骤如下:
① 检查 CX寄存器的值, 若 ( CX) =0,则退
出串操作指令 。
汇编语言 程序设计
② 否则指令执行一次串操作指令 。
③ 根据 DF标志自动修改地址指针 。
④ ( CX) ← ( CX)- 1,返回 ①。
返回
汇编语言 程序设计
7.2 表的处理
对表的处理主要包括:查询、插入、删
除、排序和搜索等几个方面。
7.2.1 表的构造
为了方便表的处理,首先要组织好表的
结构。即把表的内容按照一定的规则组织
起来,然后,程序就可以遵照这些规则存
取表中各项内容。
汇编语言 程序设计
7.2.2 表的插入与删除
表的插入就是将一新的内容插入到表
中某个单元的前面或后面,这就需要先
插入位置以后的数据后移,然后再将数
据插入,同时元素的个数也相应增加。
表的删除就是将表中某些内容删除,
这就需要删除操作完成后,将删除内容
以后的数据前移,同时元素的个数也相
应减少。
汇编语言 程序设计
7.2.3 排序
排序也称为分类,是指对给定的一组数
据,按着规定的顺序进行重新排列。
排序的目的是为了方便检索,提高检索
的效率。
常用的有交换排序, 选择排序和插入排
序等 。
7.2.4 查找
查找是在数据表处理中经常使用的一
种操作。查找的方法有二分(折半)查找
和散列值查找等。 返回
汇编语言 程序设计
7.3 代码转换
7.3.1 二进制数与 ASCII码间的相互转换
1,二进制数转换成 ASCII码
为了将计算机内的二进制数在屏幕
上显示或在打印机上输出, 就必须先将
二进制数转换成 ASCII码 。
汇编语言 程序设计
2,ASCII码转换成二进制数
从键盘输入一个数字,而机器接收
到的是它的 ASCII码,若这个数字要进行
二进制运算,则首先要将其转换成二进
制数。
汇编语言 程序设计
7.3.2 二进制数与 BCD码间的相互转换
1.二进制数转换成 BCD码
在计算机内部,当完成二进制运算后
输出时,需要将其转换为 BCD码。这种
从二进制数到十进制数非压缩 BCD码的
转换,经常使用减法转换法、除法转换
法和表达式转换法。
2,BCD码转换成二进制数
返回