zoukankan      html  css  js  c++  java
  • 汇编(三)

      本次程序实现的内容:从键盘读取一个1-7的数字,并显示相应的星期的英文单词。

      该程序使用地址表实现。用七个处理程序段分别显示1~7个 对应的英文单词,并将首地址保存在地址表中。

      地址表:在数据段中定义一个子存储区table,顺序存放7个处理程序段的起始地址。然后将输入的数字和对应的地址表下标对齐起来(即映射函数)即可。在这里需要注意的是,地址表中保存的分支地址是16位的,占用的是两个字节。所以在下标对应的时候,需要乘二。比如下标为i,则调用第i个处理程序段的入口地址是table[i*2]。乘二在汇编中可以用左移一位实现。

      具体如下:

      

    ;从键盘读取一个1-7的数字,并显示相应的星期的英文单词
    stack segment stack
        db 2014 dup(?)
    stack ends
    
    data segment 'data'
        msg0 db 0dh,0ah,'input number(1-7):',0dh,0ah,'$'
        msg1 db 0dh,0ah,'Monday',0dh,0ah,'$'
        msg2 db 0dh,0ah,'Tuesday',0dh,0ah,'$'
        msg3 db 0dh,0ah,'Wednesday',0dh,0ah,'$'
        msg4 db 0dh,0ah,'Thursday',0dh,0ah,'$'
        msg5 db 0dh,0ah,'Friday',0dh,0ah,'$'
        msg6 db 0dh,0ah,'Saturday',0dh,0ah,'$'
        msg7 db 0dh,0ah,'Sunday',0dh,0ah,'$'
        tab dw PROCA,PROCB,PROCC,PROCD,PROCE,PROCF,PROCG  ;地址表
    data ends
    
    code segment 'code'
        assume cs:code,ds:data,ss:stack
    start:
        mov ax,data
        mov ds,ax
        mov dx,offset msg0
        mov ah,09H
        int 21H
        mov ah,01H
        int 21H
        cmp al,31H
        jl start
        cmp al,37H
        jg start
        dec al
        sub al,30H
        cbw
        shl ax,1
        mov bx,ax
        jmp tab[bx]
    PROCA:
        mov dx,offset msg1
        mov ah,09H
        int 21h
        jmp done
    PROCB:
        mov dx,offset msg2
        mov ah,09H
        int 21h
        jmp done
    PROCC:
        mov dx,offset msg3
        mov ah,09H
        int 21h
        jmp done
    PROCD:
        mov dx,offset msg4
        mov ah,09H
        int 21h
        jmp done
    PROCE:
        mov dx,offset msg5
        mov ah,09H
        int 21h
        jmp done
    PROCF:
        mov dx,offset msg6
        mov ah,09H
        int 21h
        jmp done
    PROCG:
        mov dx,offset msg7
        mov ah,09H
        int 21h
        jmp done
    done:    
        mov ax,4c00h
        int 21h
    code    ends
        end start
  • 相关阅读:
    PAXOS: libevent_paxos
    R提高篇(五): 描述性统计分析
    R提高篇(四): 数据管理二
    R提高篇(三): 数据管理一
    锂电池知识
    R提高篇(二): 图形初阶
    R提高篇(一): 输入输出
    动力电池基本知识篇
    DW(六):polybase访问Azure Blob Storage
    DW(五):polybase集群安装
  • 原文地址:https://www.cnblogs.com/xiongmao-cpp/p/4919821.html
Copyright © 2011-2022 走看看