| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1661 人关注过本帖
标题:Intel 8086下的查表方法,对表的遍历方法
只看楼主 加入收藏
hlmzrdongdong
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖北武汉
等 级:版主
威 望:1
帖 子:99
专家分:145
注 册:2008-10-24
结帖率:100%
收藏
 问题点数:0 回复次数:1 
Intel 8086下的查表方法,对表的遍历方法
下面的代码是一个查表程序,通过数值表table2查其对应的table1表内的数据。
下面的程序是查询数值表table2中0ch对应于table1中的数据1eh。
其中有一段很有用的代码即表的遍历方法,摘在下面:

mov si,0h
    mov cx,4h
    cld
c1: lodsb
    cmp al,dl
    jz c2   
    loop c1  
上面的代码通过源变址SI和循环次数寄存器CX,以及方向控制CLD共同来完成表的遍历。

data1 segment     
    table1 db 2h,1eh,3ch,5ah ;段码表   
data2 segment   
    table2 db 0h,0ch,17h,1h  ;查询数值表
data3 segment
    table3 db "Error,try again!....$"
data4 segment
    table4 db "Succeed!....$"
ends


code segment
start:
    mov ax, data2 ;获得数值表table2的段地址
    mov ds,ax     ;代码段寄存器指向table2
    mov dl, 0h   ;查询数为0ch

;遍历数值表,以找出所要查询的数值相对数值表表首的相对地址   
    mov si,0h
    mov cx,4h
    cld
c1: lodsb
    cmp al,dl
    jz c2   ;相等则跳转至c2以查询对应段码
    loop c1  
   
    jmp c3  ;无匹配值着跳转至c3以执行显示错误操作提示

; 根据cx值计算的相对地址作为段码表table1的偏移量加table1表首地址确定相应段码
c2: mov ax,data1 ;获得数值表table2的段地址
    mov ds,ax    ;代码段寄存器指向table2
    mov ax,4h
    sub ax,cx    ; 计算偏移量为3-cx并送bx
    mov bx,ax
    mov cl,[bx]  ;查出相应段码送dl   
    jmp c4

c3: mov ax,data3
    lea dx,table3
    mov ds, ax
    mov es, ax
    jmp c5   

c4: mov ax,data4
    lea dx,table4
    mov ds, ax
    mov es, ax           
   
c5: mov ah, 9
    int 21h      ; output string at ds:dx
   
     ; wait for any key....   
    mov ah, 1
    int 21h
   
    mov ax, 4c00h ; exit to operating system.
    int 21h   

ends                  
end start
收到的鲜花
  • zklhp2008-10-26 08:53 送鲜花  50朵   附言:好文章
搜索更多相关主题的帖子: Intel 遍历 
2008-10-25 22:25
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
学习了
2008-10-26 09:05
快速回复:Intel 8086下的查表方法,对表的遍历方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025692 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved