zoukankan      html  css  js  c++  java
  • 第十六章 直接定址表

    1、描述了单元长度的标号:后面没有冒号的标号可以同时描述内存地址和单位长度。因为这种标号包含了对单元长度的描述,所以,在指令中,它可以代表一个段中的内存单元。称为数据标号

    2、一般来说,我们不会在代码段中定义数据,而是将数据定义到其他段中。

    注意:1.在后面加有“:”的地址标号,只能在代码段中使用,不能在其他段中使用。

    2.如果想在代码段中,直接用数据标号访问数据,则需要用伪指令assume将标号所在的段和一个段寄存器联系起来

    3、在其他段中使用数据标号:

    4、seg操作法,功能为取得某一标号的段地址。

    5、“查表”方法:目的:1.为了算法的清晰和简洁;2.为了加快运算速度;3.为了使程序易于扩充。

    例如1. 用十六进制显示byte型数据;2.编一个子程序计算sin(x)。

    6、编程的时候要注意程序的容错性,即对于错误的输入要有处理能力。

    7、可以在直接定址表中存储子程序的地址,从而方便地实现不同子程序的调用

    8、程序入口地址的直接定址表。

    9、清屏是用空格覆盖,就跟u盘格式化一样,修改了引导区。

     

    View Code
     1 ;用16进制显示数据
    2 assume cs:code

    3
    4 code segment
    5
    6 start: mov al,0eh ;存储要显示地数据
    7

    8 call showbyte
    9
    10 mov ax,4c00h
    11 int 21h
    12
    13 showbyte:
    14 jmp short show
    15
    16 table db '0123456789ABCDEF' ;字符表
    17

    18 show: push bx
    19 push es
    20
    21 mov ah,al
    22 mov cl,4
    23 shr ah,cl ;右移四位,ah中存储高四位的值
    24 and al,00001111b ;al中为低4位的值
    25

    26 mov bl,ah
    27 mov bh,0
    28 mov ah,table[bx] ;用高4位的值作为相对table的偏移值,取得对应的字符
    29

    30 mov bx,0b800h
    31 mov es,bx
    32 mov es:[160*12+40*2],ah
    33
    34 mov bl,al
    35 mov bh,0
    36 mov al,table[bx] ;用低4位的值作为相对table的偏移值,取得对应的字符
    37

    38 mov es:[160*12+40*2+2],al
    39
    40 pop es
    41 pop bx
    42 ret
    43
    44 code ends
    45 end start


  • 相关阅读:
    创建100个文件,并对每个文件赋值
    vsftpd服务程序的三种认证模式
    slf4j打印日志必须的三个依赖包
    MySql镜像安装
    java子类调用父类构造器函数
    shell脚本批量调用接口
    go语言生成可执行文件
    linux通过VMware和主机相连连接互联网
    yum源配置
    vmware上安装linux过程记录
  • 原文地址:https://www.cnblogs.com/quantumplan/p/2406520.html
Copyright © 2011-2022 走看看