《江西理工大学微机原理》由会员分享,可在线阅读,更多相关《江西理工大学微机原理(20页珍藏版)》请在金锄头文库上搜索。
1、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位二进
2、制数与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
3、 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 ,MA
4、X 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 D
5、B 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 NDATBX ,AL INC BX JMP LAB LOOP1: MOV PDATDI ,AL INC DI LAB: DEC CX JNZ LOOP0 MOV PLEN ,DI MOV NLEN,BX MOV AH,4CH INT 21H COD
6、E 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 ST
7、ART 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_
8、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个单元内容是什么
9、答与IR2相连地址为0000.0128H矢量对 应 的4个 单 元 内 容 依 次 为40H,3AH,00H,20H 2)请为8259A设置正确的初始化命令并编写程序: ICW1=00010011单片边缘触发必须设置ICW4ICW2=48H终端类型码基值为48H无ICW3单片8259A系统无需设置ICW3ICW4=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
10、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 NE
11、XT2 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
12、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加法程序 COD