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
  • 相关阅读:
    npm使用淘宝镜像源
    MapReduce任务执行源码分析
    spark.sql.shuffle.partitions到底影响什么
    hdfs的写入数据流程及异常情况分析
    面试题
    HDFS的双缓冲机制详解
    rpm包无法卸载
    hive建表支持的文件类型与压缩格式
    centos6中同时安装python3.7与python2.6
    linux centos6.x安装mysql5.6.33版本
  • 原文地址:https://www.cnblogs.com/xiongmao-cpp/p/4919821.html
Copyright © 2011-2022 走看看