
设有一输入设备,其数据端口的地址为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如下图,假设LED数码管为共阴管,且段a接数据的最低位,段dp(小数点)接最高位,请编写显示内存单元DS:[1200H]中数据(为1位非压缩BCD码)的程序段。
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 startdata 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下图所示为一个I/O接口电路。
1)该接口的操作类型是(输入)还是(输出);
2)主机对其I/O的传送控制方式是什么?  查询
3)图中信号IOR当执行什么指令时有效?  IN
4)结合一次数据的I/O过程,写出有关的几条指令。
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设某系统中CPU的寄存器和存储区的一段内容如下:
(20H)=3CH、(21H)=00H、(22H)=86H、(23H)=0EH、CS=2000H、IP=0010H、SS=1000H、SP=0100H、FLAGS=0240H
这时执行INT 8指令
(1) 程序转向何处执行?
(2) 堆栈栈顶6个内存单元的地址及内容分别是什么?
堆栈栈顶6个内存单元的地址及内容分别是什么?
这个问题主要考察中断时,系统是如何保护现场的具体过程如下


结果如如表4-1

什么是中断向量?什么是中断向量表?若某外部可屏蔽中断的类型号为30H,则中断服务程序的入口地址为1020H:3040H,用8086汇编语言编程实现将该中断服务程序的入口地址装入中断向量表中。中断向量是指中断服务程序的入口地址
中断向量表是存放256个中断向量的存储区域
装入中断服务子程序
程序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若某8086系统采用单片8259A管理外部中断,其中的一个中断类型号为0DH,则它的中断向量地址指针是多少?这个中断源应接在8259A的哪个输入端上?若该中断服务程序的入口地址为D000H:3200H,则其向量区对应4个单元的数值依次是多少?


取低3位,101b=5d,所以对应IR5
原文:https://www.cnblogs.com/Howbin/p/11144922.html