第9章程序设计的一些编程技巧 第9章程序设计的一些编裎技巧 9,1表处理程序设计 9,2代码转换程序 93算术运算 94数值分析 BACK
第9章 程序设计的一些编程技巧 第9章 程序设计的一些编程技巧 9.1 表处理程序设计 9.2 代码转换程序 9.3 算术运算 9.4 数值分析
第9章程序设计的一些编程技巧 91表处理程序设计 911表的处理 表的用途十分广泛:求平方值、立方值需要使用平方值表和 立方值表,程序实现分支要用到跳转表等;大量供各种运算、査 询等用的机器执行的任务,一组组的结果,一系列有关联的数据 等等,都需要使用表来存储或处理。对表的处理通常包括査询、 插入、删除、排序和搜索等几个方面。将一新的内容插入到表中 某个单元以前或以后,这里就需要先将插入位置以后的数据后移, 然后再将数据插入,同时表元素的个数也应做相应的修改(增加); 需要将表中某些内容删除时,为保持表的完整,应将被删内容以 后的数据前移,并修改表元素个数;需要按某种规律(升序或降序) 将表中内容重新排列组织;需要在特定的表中查找给定某元素, 看是不有在此元素,存在何处,并做些其他处理等等
第9章 程序设计的一些编程技巧 9.1 表处理程序设计 9.1.1 表的处理 表的用途十分广泛:求平方值、立方值需要使用平方值表和 立方值表,程序实现分支要用到跳转表等;大量供各种运算、查 询等用的机器执行的任务,一组组的结果,一系列有关联的数据 等等,都需要使用表来存储或处理。对表的处理通常包括查询、 插入、删除、排序和搜索等几个方面。将一新的内容插入到表中 某个单元以前或以后,这里就需要先将插入位置以后的数据后移, 然后再将数据插入,同时表元素的个数也应做相应的修改(增加); 需要将表中某些内容删除时,为保持表的完整,应将被删内容以 后的数据前移,并修改表元素个数;需要按某种规律(升序或降序) 将表中内容重新排列组织;需要在特定的表中查找给定某元素, 看是否存在此元素,存在何处,并做些其他处理等等
第9章程序设计的一些编程技巧 912表处理程序设计 在表处理程序设计中,经常要用到ⅩLA指令,XLAT指令称 为查表转换指令,在3.2.1节数据传送指令中已作过介绍。它是用 表中的一个字节(称为换码字节)来置换累加器AL中的内容,用此 指令以前,要求先把表的起始地址送入BX寄存器,且在AL中置 好所需的初值,AL中的初值为所需的换码字节在表中的相对位 置(用字节数给出),又可称为查找所需换码字节的索引值,然后 XLAT指令将BX内容加上AL内容所形成的地址单元中的内容(即 所需的换码字节)放到AL中去
第9章 程序设计的一些编程技巧 9.1.2 表处理程序设计 在表处理程序设计中,经常要用到XLAT指令,XLAT指令称 为查表转换指令,在3.2.1节数据传送指令中已作过介绍。它是用 表中的一个字节(称为换码字节)来置换累加器AL中的内容,用此 指令以前,要求先把表的起始地址送入BX寄存器,且在AL中置 好所需的初值,AL中的初值为所需的换码字节在表中的相对位 置(用字节数给出),又可称为查找所需换码字节的索引值,然后 XLAT指令将BX内容加上AL内容所形成的地址单元中的内容(即 所需的换码字节)放到AL中去
第9章程序设计的一些编程技巧 1.XLAT指令应用举例 例9-1利用XLAT指令把十六进制数转换成ASCI码 编程的基本思想是通过查表来实现进制的转换 进制转换的方法有很多,这里介绍使用表的方法来实现转 换。XLAT指令是对表进行处理的,因此,要使用XLAT指令, 就必须建立符合要求的表。程序中 HEXTAB是十六进制数表, 而 TAB DA是ASC码表
第9章 程序设计的一些编程技巧 1.XLAT指令应用举例 例9-1 利用XLAT指令把十六进制数转换成ASCII码。 编程的基本思想是通过查表来实现进制的转换。 进制转换的方法有很多,这里介绍使用表的方法来实现转 换。XLAT指令是对表进行处理的,因此,要使用XLAT指令, 就必须建立符合要求的表。程序中HEXTAB是十六进制数表, 而TAB_DA是ASCII码表
第9章程序设计的一些编程技巧 TABLE SEGMENT TAB DA DB30H,31H,32H,33H DB34H,35H,36H,37H DB38H,39H,41H,42H DB42H,43H,44H,45H,46H COUNT EQU S-TAB DA HEXTAB DB 0,1, 2, 3, 4,5 DB6,7,8,9,0AH DB OBH, OCH, ODH, OEH, OFH
第9章 程序设计的一些编程技巧 TABLE SEGMENT TAB_DA DB 30H,31H,32H,33H DB 34H,35H,36H,37H DB 38H,39H,41H,42H DB 42H,43H,44H,45H,46H COUNT EQU $-TAB_DA HEXTAB DB 0,1,2,3,4,5 DB 6,7,8,9,0AH DB 0BH,0CH,0DH,0EH,0FH