汇编语言 程序设计第 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码转换成二进制数返回
它的操作主要是对数据进行处理,
如代码转换、字符处理、排序、检索等。
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码转换成二进制数返回