a.MOV AX,[SI][DI]; 答: b.MOV [SI],OFFH; 答: c.MOV DATA[SI],CS:AX;答: d.MOV CL,BX; 答: e.OUT280H,AL; 答: 4、变量是什么?标号是什么? 5.8086/8088系统中有20根地址线,它的存储空间最大是多少?将该内存空间顺序分为16段,每段64K,试写出第二段和最末段的地址范围。 6.分析下列程序段,写出该程序段的功能。 MOV AX,2000H MOV DS,AX MOV AX,6000H MOV ES,AX MOV SI,1200H MOV DI,0 MOV CX,100 CLD
NEXT:REP CMPSB
7.8088CPU的中断系统中,中断向量表长度是多少字节?中断向量表的地址范围是多少? 8、已知X=-1101001 Y=-1010110,计算[X-Y]补=?
9、8088的EU和BIU有哪些主要功能?在执行指令期间,EU能直接访问存储器吗? 10、指出以下指令中源操作数的寻址方式。 MOV SI,300 MOV AX,[3102H]
ADD AX,[BX][SI] MUL BL
MOV [BP],AX
11、编写程序段,当输入接口的bit1、bit4、bit7位同时为1时,CPU将内存中以DATA为首址的10个单元的数据从输出接口输出,若不满足上述条件则等待。 已知输入接口地址:FF80H 输出接口地址:FF81H
12、已知X=1100001B,Y=1010101B,用8位补码计算(X-Y)补=?,并说明结果是否溢出。 14、在8086/8088系统中,当前数据段位于存储器的78000H-87FFFH,则DS 段寄存器为: 。
15、在数据段中有以下定义:
ARRAY1 EQU 16H ARRAY2 DW 7F16H
请指出下面两条指令中源操作数的寻址方式:
MOV AX,ARRAY1; 寻址方式 MOV AX,ARRAY2; 寻址方式
四、程序填空题
1、下列程序段为RAM实验中的存储器测试程序,将语句补充完整。 DATA
MESSAGE DB ’PLEASE ENTER A KEY TO SHOW THE CONTENTS’,ODH,OAH,’$’ DATA ENDS CODE SEGMENT
ASSUME CS: ,DS:DATA, ES:DATA START:MOV AX,DATA MOV DS, MOV AX,2000H MOV ES,AX
MOV BX,1000H MOV DL,40H REP1: INC DL ;输入A到Z 26个字符 MOV ES:[BX],DL INC ;修改指针 CMP DL,’Z’ JNZ LEA DX, ;以下显示提示信息 MOV AH,09H INT 21H
MOV AH,01H ;等待按键 INT 21H
MOV AX,2000H ; MOV ES,AX MOV BX,1000H
MOV CX,26 ;以下显示已写入的字符 REP2: MOV DL,ES:[BX] MOV ,02H INT 21H INC BX LOOP MOV AX, ;返回DOS INT 21H CODE
END START
2、设在内存NUM单元开始存放着100个字节,要求将其中为零的元素全部删除,并将保留的数据连续存放,以$为结束标志;结束标志的下一个单元保存零元素个数。下列程序是满足以上要求的部分程序,请补充完整。
DATA SEGMENT NUM 100 DUP(?) NUM1 DB 00,00 DATA ENDS CODE
ASSUME CS:CODE, START: MOV AX,DATA MOV DS,AX LEA SI, ;取NUM数据区首址 MOV DI,SI MOV CX,100 XOR DL,DL ;DL作为统计零元素个数的计数器 GO1: MOV AL,[SI] CMP JNZ GO2 INC JMP GO3 GO2: MOV [DI],AL INC DI GO3: INC LOOP MOV [DI],‘$’ INC DI
MOV [DI], MOV AH, INT 21H CODE ENDS END START 3、设在内存NUM单元开始存放着100个字节类型的整数,要求将其中为一的元素全部删除,并将剩余的数据元素连续存放,以0为结束标志,另外结束标志的下一个单元保存零元素个数。下列程序是满足以上要求的部分程序,完成该程序: DATA SEGMENT NUM a1, a2, ??, a100 NUM1 DB 0,0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS: START:MOV AX,DATA MOV DS,AX LEA SI, ;取数据首址 MOV DI, SI MOV CX,100 XOR DL,DL ;DL作为统计零元素个数的计数器 GO1: MOV AL,|SI| CMP ,0 ;与0比较 JNZ GO2 INC ;零元素计数器加一 JMP GO3 GO2: MOV [DL], ;保存 非零元素 INC DI GO3: INC SI LOOP GO1 MOV BYTE PTR |DI|,0 MOV ,DL ;保存零元素个数 MOV AH, INT 21H CODE ENDS END
4、把从ARRAY单元开始的6个无符号数按从小到大的顺序排序。请把程序补充完整,说明:本程序用BL寄存器作为交换标志寄存器,BL=0,表示排序完成;BL=0FFH,表示排序示完成,BL初值预置为0FFH。 程序如下: DATA ARRAY DB 25,75,3,46,5,30 COUNT EQI 6 DATA ENDS STACK SEGMENT DW 50 DCP (?) STACK ENDS CODE SEGMENT CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX, ;初始化DS,ES,SS MOV DS,AX MOV ES,AX
MOV AX, MOV SS,AX MOV BL,0FFH ;初始化变换标志寄存器 AGAIN0: CMP BL,0 JZ DONE ;BL=0,转移到DONE BL,BL ;否则BL清0 MOV SI,OFFSET ARRAY MOV CX, ;置循环次数 DEC CX AGAINI: MOV AL,|SI| ;两元素比较 CMP ,|SI+1| JBE UNCH ;若|SI|≤|SI+1,不交换 EXCH: MOV DL,|SI+1| ;否则交换 MOV |SI|,DL MOV |SI+1|, MOV BL,0FFH ; 互换标志位 UNCH: INC SI LOOP AGAIN1 JMP AGAIN0 DONE: MOV AH ;返回DOS
INT 21H CODE ; 码段结束 END START
五、应用题
1. 根据下列要求编写一个汇编语言程序::
(1) 代码段的段名为COD_SG (2) 数据段的段名为DAT_SG
(3) 堆栈段的段名为STK_SG (4) 变量HIGH_DAT所包含的数据为95
(5) 将变量HIGH_DAT装入寄存器AH,BH和DL (6) 程序运行的入口地址为START
2. 指出下列程序中的错误:
STAKSG SEGMENT DB 100 DUP(?) STA_SG ENDS DTSEG SEGMENT DATA1 DB ? DTSEG END CDSEG SEGMENT MAIN PROC FAR START: MOV DS,DATSEG MOV AL,34H ADD AL,4FH MOV DATA,AL START ENDP CDSEG ENDS END
12. 变量DATAX和DATAY定义如下:
DATAX DW 0148H
DW 2316H DATAY DW 0237H DW 4052H 按下述要求写出指令序列: DATAX和DATAY中的两个字数据相加, 和存放在DATAY和DATAY+2中。 DATAX和DATAY中的两个双字数据相加, 和存放在DATAY开始的字单元中。 DATAX和DATAY两个字数据相乘(用MUL)。 DATAX和DATAY两个双字数据相乘(用MUL)。 DATAX除以23(用DIV)。
DATAX双字除以字DATAY(用DIV)。
14. 用其他指令完成和下列指令一样的功能: (1) REP MOVSB SCASB
答案::
(2) REP LODSB
(3) REP STOSB
(4)
REP
六、存储器设计
利用SRAM6264(8K×8位)芯片和EPROM 2764(8K×8位)芯片构成存储器,与8088/8086系统总线相连(如下图所示),请根据接线图回答下列问题。 1.写出SRAM6264的地址范围: 2.写出EPROM2764地址范围: 3.如果地址线A18不参与译码, 写出SRAM6264的地址范围: 写出EPROM2764的地址范围: 4.根据总线信号说明8088CPU的工作模式: