找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 271|回复: 1

Intel 8086下的查表方法,对表的遍历方法

[复制链接]
发表于 2009-12-4 01:38:27 | 显示全部楼层 |阅读模式 IP:江苏扬州
下面的代码是一个查表程序,通过数值表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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 13:27 , Processed in 0.191214 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表