zoukankan      html  css  js  c++  java
  • 输入输出与中断

    输入输出与中断

    题目1

    问题描述

    设有一输入设备,其数据端口的地址为FFE0H,并从端口FFE2H提供状态,当其D0位为1时表明输入数据准备好。试编写采用查询方式进行数据传送的程序段,要求从该设备读取64个字节并输入到从2000H开始的内存中

    解答:

    data segment
    IOEA equ FFE0H
    IOSA equ FFE0H
    data ends
    code segment
        assume cs:code,ds:data
    start:
        mov ax,data
        mov ds,ax
        
       
        mov cx,64
    w: 
        mov dx,IOSA  
        in  al,dx
        test al,01h
        jz w
    l:  mov dx,IOEA
        in al,dx
        mov [2000h],al
        loop w
        
        mov ah,4ch
        int 21h
    code ends 
        end start

    题目2

    问题描述

    如下图,假设LED数码管为共阴管,且段a接数据的最低位,段dp(小数点)接最高位,请编写显示内存单元DS:[1200H]中数据(为1位非压缩BCD码)的程序段。

    题目2
    题目2

    解答:

    程序一

    data segment
        IOA equ  83h
        mytab db 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH; 共阳极数码管   
        mydata db 00000001b
    data ends  
    code segment 
        assume cs:code,ds:data
    start:
        mov ax,data
        mov ds,ax
        
        xor bx,bx
        mov bl,mydata;
        mov al,mytab[bx]
         
        mov dx,IOA
        
        out dx,al 
        
        mov ah,4ch
        int 21h;
    code ends
        end start

    程序2 利用xlat指令

    data segment
        IOA equ  83h
        mytab db 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH; 共阳极数码管   
        mydata db 00000001b
    data ends  
    code segment 
        assume cs:code,ds:data
    start:
        mov ax,data
        mov ds,ax
        
        
        lea bx,mytab;
        mov al,mydata
        xlat
         
        mov dx,IOA
        
        out dx,al 
        
        mov ah,4ch
        int 21h;
    code ends
        end start

    题目3

    问题描述

    下图所示为一个I/O接口电路。
    1)该接口的操作类型是(输入)还是(输出);
    2)主机对其I/O的传送控制方式是什么?  查询
    3)图中信号IOR当执行什么指令时有效?  IN
    4)结合一次数据的I/O过程,写出有关的几条指令。

    题目3
    题目3

    解答

    1. 输入
    2. 程序传送方式中的查询
    3. IN
    4. 相关指令如下
    data segment
        IOA equ 200H
        IOS equ 201H 
    data ends  
    code segment 
        assume cs:code,ds:data
    start:
        mov ax,data
        mov ds,ax
        
        
    w:  
        mov dx,IOS
        in  al,dx
        test al,80h;
        jz w
        
        mov dx,IOA
        in  al,dx
        
        mov ah,4ch
        int 21h;
    code ends
        end start

    题目4

    题目描述

    设某系统中CPU的寄存器和存储区的一段内容如下:
    (20H)=3CH、(21H)=00H、(22H)=86H、(23H)=0EH、CS=2000H、IP=0010H、SS=1000H、SP=0100H、FLAGS=0240H
    这时执行INT 8指令
    (1) 程序转向何处执行?
    (2) 堆栈栈顶6个内存单元的地址及内容分别是什么?

    解答:

    1. 程序转向何处执行

    1. 堆栈栈顶6个内存单元的地址及内容分别是什么?

      这个问题主要考察中断时,系统是如何保护现场的

      具体过程如下

    结果如如表4-1
    表4-1

    题目5

    题目描述

    什么是中断向量?什么是中断向量表?若某外部可屏蔽中断的类型号为30H,则中断服务程序的入口地址为1020H:3040H,用8086汇编语言编程实现将该中断服务程序的入口地址装入中断向量表中。

    解答:

    1. 中断向量是指中断服务程序的入口地址

    2. 中断向量表是存放256个中断向量的存储区域

    3. 装入中断服务子程序

      程序1:基于DOS中断 无需计算中断向量地址
      功能号:AH=25H
      入口参数: AL=中断类型号
                 DS=中断服务程序入口地址的段地址
                 DX=中段服务程序入口地址的偏移地址
                 
      具体程序
      push ds
      ;准备入口参数
      mov dx,3040H
      mov ax,1020H
      mov ds,ax
      ;调用dos中断
      ;设置功能号
      mov ah,25h
      ;设置入口参数
      mov al,30h
      int 21h
      程序2直接装入法
      需要计算向量入口地址

      中断号×4即为中断向量地址,依次装入IP,与CS。

    可知中断向量地址为 COH
    具体程序如下

       ;设置段地址
       push ds
       xor ax,ax
       mov ds,ax
       ;首先装入IP
       mov ax,3040H
       mov [0COH],ax
       ;装入CS
       mov ax,1020H
       mov [0C2],ax

    题目6

    题目描述

    若某8086系统采用单片8259A管理外部中断,其中的一个中断类型号为0DH,则它的中断向量地址指针是多少?这个中断源应接在8259A的哪个输入端上?若该中断服务程序的入口地址为D000H:3200H,则其向量区对应4个单元的数值依次是多少?

    解答:

    1. 中断向量指针
    1. 8259A中断引脚的确定

    取低3位,101b=5d,所以对应IR5

  • 相关阅读:
    Python----路由器远程控制
    进程和线程的区别
    tengine日志切割-配置分钟级别日志自动切割
    grep每次读取多大的文本
    bc 进制间转换
    二分法猜数字
    What is the difference between HTTP_CLIENT_IP and HTTP_X_FORWARDED_FOR
    Nginx配置两份日志记录
    Nginx启动报错误unlink() “nginx.pid” failed (2: No such file or directory)
    Mysql 数据库crash恢复
  • 原文地址:https://www.cnblogs.com/Howbin/p/11144922.html
Copyright © 2011-2022 走看看