江西理工大学 微机原理复习-网络专业
- 格式:doc
- 大小:209.68 KB
- 文档页数:3
1、统计出某数组中相邻两数之间符号变化的次数 DATA SEGMENT ARRAY DB 20 DUP (?) NUM DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA STARTUP:LEA SI , ARRAY; MOV AL ,[SI] MOV BL,0 MOV CX,19 AGAIN: INC SI XOR AL ,[SI] J NS NEXT INC BL NEXT: MOV AL ,[SI] LOOP AGAIN MOV NUM,BL MOV AH ,4CH INT 21H CODE ENDS END STARTUP 2、乘法指令实现32位二进制数与16位二进制数相乘 MODEL SMALL .8086 .DATA N1 DW 1234H N2 DW 5678H N3 DW 4444H M1 DW 0 M2 DW 0 M3 DW 0 CODE . STARTUP MOV AX ,N2 MUL N3 MOV M3,AX MOV M2,DX MOV AX,N3 MUL N1 ADD M2,AX ADC M1,DX .EXIT END 3、设有3个自变量的变量名及其内容如下: VAR1 3C46H , VAR2 F678H , VAR3 0059H 设计一个数据段定义这三个变量及其地址表变量DDRTABL DATA SEGMENT VAR1 DW 3C46H VAR2 DW F678H VAR3 DW 0059H ADDRTABL DD VAR1 DD VAR2 DD VAR3 DATA ENDS 4、设有一个符号数组,共M个,求其中最大的数,如需要求绝对值最大应如何修改,如为无符号数,程序如何修改。 DATA SEGMENT M EQU 10 DAT DW M DUP(?) MAX DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA STARUP : MOV AX ,DAT MOV MAX ,AX CLD LEA SI ,DAT MOV CX ,M L1: LODSW CMP AX ,MAX JNG LAB MOV MAX ,AX LAB : LOOP L1 MOV AH ,4CH INT 21H CODE ENDS END STARTUP 绝对值修改:需要在LODSW插入 AND AX ,AX JNS LAB1 NEG AX LAB1: CMP AX ,MAX 程序初始化时MAX应送入0 无符号数程序修改: 判别条件CMP AX ,MAX JNG LAB 修改为CMP AX,MAX JBE LAB 5、编制一个程序将20个字节的数组分为正数和负数组,并计算两个数组中数据的个数 DATA SEGMENT DAT DB 20 DUP (?) PDAT DB 20 DUP(?) PDAT DB ? PLEN DB ? NDAT DB 20 DUP (?) NLEN DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA STARTUP: XOR BX ,BX LEA SI ,DAT XOR DI,DI CLD MOV CX,20 LOOP0 : LODSB CMP AL,0 JGE LOOP1 MOV NDAT[BX] ,AL INC BX JMP LAB LOOP1: MOV PDAT[DI] ,AL INC DI LAB: DEC CX JNZ LOOP0 MOV PLEN ,DI MOV NLEN,BX MOV AH,4CH INT 21H CODE ENDS END STARTUP 6、把从A开始的8个字节单元内容依次和从B开始的8个相应的字节单元内容互换。 DATA SEGMENT A DB 'ABCDEFGH' B DB '12345678' DATA ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA START: MOV AX ,DATA MOV DS,AX LEA SI ,A LEA DI ,B MOV CX,8 LP:MOV AL ,[SI] XCHG AL ,[DI] MOV [SI], AL INC SI INC DI LOOP LP MOV AH ,4CH INT 21H CODE ENDS END START 7、计算BUF开始的数组中的100个元素中非零元素的个数,并将其存入COUNT单元,补全指令 BUF DB 100 DUP (?) COUNT DB 0 .............. STARTUP: MOV AX,DATA MOV DS,AX LEA SI, (1)________ MOV CX ,(2)______ CON:MOV AL,[SI] CMP AL ,(3)_______ .JZ NEXT INC (4)_____ NEXT: INC SI LOOP (5)______ HLT 答案:BUF 100 0 COUNT CON 8、程序执行后寄存器的值: MOV AX,01H MOV BX ,02H PUSH BX PUSH AX POP BX 执行后BX=(1)___ POP AX 执行后AX=(1)____ MOV AX ,3F5FH 执行后AL=(3)______ MOV CX ,4 ROR AL,CL 执行后AL=(4)____ AND AL ,0FH 执行后AL=(5)_______ 答案:01H 02H 5FH 0F5H 05H 8、大题:若8086系统中采用单片8259A作为外部可屏蔽中断的优先级管理,正常全嵌套方式,边缘触发,非缓冲连接,非自动终端结束,端口地址为20H和21H,其中,某中断源的中断类型码为4AH,其中断服务子程序名为SUBROUTINE,且已知其地址为2000.3A40H (1)请问本题中的中断源应与8259A的哪个IR输入端相连?其中断矢量地址是多少,矢量区对应的4个单元内容是什么? 答:与IR2相连,地址为0000.0128H,矢量对应的4个单元内容依次为40H,3AH,00H,20H (2)请为8259A设置正确的初始化命令,并编写程序: ICW1=00010011,单片,边缘触发,必须设置ICW4;ICW2=48H,终端类型码基值为48H;无ICW3,单片8259A系统,无需设置ICW3;ICW4=00000001,正常全嵌套方式,非缓冲连接,非自动中断结束,8086 CPU,初始化程序如下: MOV AL ,13H OUT 20H, AL MOV AL ,48H OUT 21H,AL MOV AL,01H OUT 21H,AL (3)请编写程序片段,设置该中断源的中断矢量 MOV AX ,0 MOV ES ,AX MOV DI ,4AH*4 MOV AX ,OFFSET SUBROUTINE CLD STOSW MOV AX,SEG SUBROUTINE STOSW 9、分支程序设计实验 (1)显示AL中两位十六进制数程序: CODE SEGMENT ASSUME CS:CODE START: MOV AL,3EH MOV BL,AL MOV DL,AL MOV CL,4 SHR DL,CL CMP DL,9 JBE NEXT1 ADD DL,7 NEXT1: ADD DL,30H MOV AH,2 INT 21H MOV DL,BL AND DL,0FH CMP DL,9 JBE NEXT2 ADD DL,7 NEXT2: ADD DL,30H MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START (2)显示键入字符 CODE SEGMENT ASSUME CS:CODE START: MOV AH,1
INT 21H CMP AL,0DH JZ DONE CMP al,'0' JB next CMP AL,'9' JA CHRUP MOV DL,AL MOV AH,2 INT 21H JMP START CHRUP: CMP AL,41H JB NEXT CMP AL,5AH JA CHRDN DISPC: MOV DL,'C' MOV AH,2
INT 21H NEXT: JMP START CHRDN: CMP AL,61H JB NEXT CMP AL,7AH JA NEXT JMP DISPC DONE: MOV AH,4CH INT 21H CODE ENDS END START 10、实验四:偶校验程序 DSEG SEGMENT STRN DB 'ABCDEfghijkLMNOPQuvw','$' N DB ? DSEG ENDS
CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA SI,STRN MOV DL,0 AGAIN: MOV AL,[SI] CMP AL,'$' JE DONE TEST AL,0FFH JPE NEXT OR AL,80H MOV [SI],AL INC DL NEXT: INC SI JMP AGAIN DONE: MOV N,DL MOV AH,4CH INT 21H CSEG ENDS END START (2)加法程序 CODE SEGMENT ASSUME CS:CODE,DS:CODE START: MOV AX,CS MOV DS,AX LEA SI,DAT1 LEA DI,DAT2 LEA BX,DAT3 MOV CX,10 XOR AL,AL AGAIN: MOV AL,[SI] ADC AL,[DI] MOV [BX],AL INC SI INC DI INC BX LOOP AGAIN MOV AH,4CH INT 21H DAT1 DB 70H,80H,90H,0A0H,0A1H,0A2H,0A3H DB 74H,65H,56H DAT2 DB 45H,67H,89H,1AH,2BH,3CH DB 4DH,5EH,6FH,04H DAT3 DB 10 DUP(?) CODE ENDS END START 11、填空题: 1、输入输出指令间接寻址必须通过DX寄存器 2、20根地址线最大内存容量是220 3、标志寄存器有9位标志位,其中3位控制标志位,6位状态标志位 4、BIU和EU两个单元并行工作在CPU中 5、SP和BP是指针寄存器,SP指示堆栈段段顶的偏移地址 6、零标志位ZF=1时,结果全为0 7、对于5片8259A形成的级联共有36级中断 8、debug跟踪执行命令是t命令 9、中断矢量表存放在存储器最低位 10、存储器是分段的,每段最大长度是64KB 11、段内偏移地址从0000到FFFFH 12、8259A A0与地址总线A1相连 13、取指令时,段地址由CS寄存器提供,偏移地址由IP寄存器提供 14、16位有符号二进制补码范围为-32768~32767 15、8086可访问偶数存储体的选择信号是A0 16、中断矢量表可以容纳256个中断向量,每个中断向量有4个字节 17、DOS功能调用功能号在AH寄存器里面 18、条件转移指令多路分支,输入5路分支需要3条件转移指令 12、设有两个等字长,字节型字符串,试编写一程序,比较他们是否完全相同,如相同则讲字符Y送入AL中,否则将字符N送入AL中 DATA SEGMENT STRING1 DB 'ASdAS' STRING2 DB 'ASASd' DATA ENS CODE SEGMENT ASSUME CS:CODE,DS:DATA STARTUP:MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI , STRING1 LEA DI ,STRING2 MOV CX,5 REPZ CMPSB STRING1 ,STRING2 JNZ LABNE MOV AL ,'Y' MP EXIT LABNE :MOV AL ,'N' EXIT : MOV AH ,4CH INT 21H CODE ENDS END STARTUP 13可屏蔽中断响应和处理过程: (1)中断允许标志IF置1,没有异常,没有非屏蔽中断NMI=0,没有总线请求,CPU响应可屏蔽中断请求; (2)外部设备向8259A发出中断请求信号,经过8259A处理后得到相应的中断矢量号,并同时向CPU申请中断INT=1 (3)如果指令不是HLT或者WAIT,则CPU执行完当前指令后便向8259A发出中断信号INTA=0,表明CPU响应该可屏蔽中断请求 若指令是HLT,则中断请求信号INTR的产生使处理器退出暂停状态,响应中断,进入中断处理程序 若指令是WAIT。且TSET引脚加入低电平信号,则中断请求信号INTR产生后,使处理器脱离等待状态,进入中断处理程序 处理过程包括四部分:保护现场、中断服务程序、恢复现场、中断返回。 14,8259A的中断处理过程: (1) 当中断请求输入线IR0~IR7中有一条或多条变高时,则中断请求寄存器IRR的相应位置“1”。 (2) 若中断请求线中至少有一条是中断允许的,则8259A由INT引脚向CPU发出中断请求信号。 (3) 如CPU是处于开中断状态,则在当前指令执行完后,用信号作为响应。 (4) 8259A在接收到CPU的信号后,使最高优先级的ISR位置“1”,而相应的IRR位清“0”。但在该中断响应周期中,8259A并不向系统总线送任何信息。 (5) CPU(8086/8088和80X86)输出第二个信号,启动第二个中断响应周期。在此周期中,8259A向数据总线输送一个8位的中断类型号(也叫指针或向量号);CPU读取此类型号