• 第十六章 直接定址表


    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


  • 相关阅读:
    navigator 对象
    面向对象 ( OO ) 的程序设计——继承
    面向对象 ( OO ) 的程序设计——创建对象
    面向对象 ( OO ) 的程序设计——理解对象
    芯片知识扫盲
    8位、16位、32位单片机中的“XX位”指什么?
    stm32库函数建工程和使用Keil自带库建工程有没有区别?发现了同样的程序在两种情况下keil自带库可以运行的情况,不知是什么原因
    关于输出的看法
    4-鸡肉为何如此受欢迎
    7-发音规则(弱读,缩写,其他)
  • 原文地址:https://www.cnblogs.com/quantumplan/p/2406520.html
Copyright © 2020-2023  润新知