(1)用一般数据传送指令MOV实现; (2)用数据串传送指令MOVSB实现; (3)用数据串指令LODSB/STOSB实现。
4.对一组无符号数进行比较,把最大数显示在屏幕上。
5.已知两个无符号字数据X、Y分别存放在ADRX和ADRY单元,编制程序,若X是Y的倍数,则显示器上显示0,否则显示1。
参考答案 一、选择题:
1.B 2.C 3.C 4.B 5.A 6.D 7.C 8.D 9.B 10.A
11.C 12.D 13.C 14.A 15.D 16.B 17.B 18.A 19.B 20.A 21.B 22.C 23.D 24.A 25.C 26.C 27.B 28.C 29.A 30.A 31.B 32.A 33.B 34.B 35.C 36.B 37.B 38.C 39.B 40.A 41.B 42.C 43.C 44.C 45.C 46.D 二、填空题:
1.运算器 控制器 2.201.D999 69.375
3.11111111 10000001 4.统一编址 独立编址
5.256 中断向量 6.循环初始化部分 循环参数修改部分 7.20A8H 11488H 8.CF OF
9.1000000001.1011B 1001.6631O 201.D999H 10100010011.10000101B 10.00110100B 00110100B 00110100B 11.-63H
12.MACRO 9 30H 13.20480H 2000H 0480H 14.11100001 E1 15.-43H
16.执行指令 产生访问存储器时所需的16位偏移地址 17.CS IP
18.256 中断码类型
19.NMI INTR(可屏蔽中断请求信号) 20.无条件传送 查询方式传送 中断方式传送 21.运算器 控制器 存储器 输入设备 输出设备 22.43.625 53.5 2B.A 23.39H
24.统一编址 独立编址 64KB 25.99A40H
26.3253.11 1707.141 27.30H 4BH
28.10011010B 11100101B 11100110B -4EH
29.段属性 偏移量属性 距离属性; 段属性 偏移量属性 类型属性 30.16 20 1MB
31.进位标志位(CF) 辅助进位标志位(AF) 符号标志位(SF) 零标志位(ZF) 溢出标志位(OF) 奇偶标志位(PF)
32.10100100B 10100101B 33.CS IP 三、判断题:
1.× 2.× 3.× 4.× 5.√ 6.× 7.× 8.× 9.× 10.× 11.√ 12.× 13.√ 14.√ 15.×
四、改错题: 1.解答:
(1)3行,数据定义伪指令DB改为DW (2)8行,DX改为AX
(3)15行,循环入口,加标号AGAIN,即将本行改为:AGAIN:CMP AX,[SI] (4)16行,JLE改为JAE
(5)17行,LODSW改为MOV AX,[SI] (6)20行,去掉该行语句 (7)22行,SI改为AX (8)23行,AL改为AH (9)25行,END改为ENDS
(10)26行,START改为程序入口标号FMAX 2.解答:
MOV AL,[SI] 改为MOV AL,BYTE PTR [SI] MUL 10 改为MOV BL,10 MUL BL
五、简答题:
1.答:80386/80486有实地址模式、保护模式和虚拟8086模式三种工作方式。
(1) 实地址模式下的80386/80486的工作原理与8086相同,内存管理只采用分段管理方式,而不采用分页管理;内存最大空间为1MB,采用段地址寻址的存储方式,每个段最大为64KB;操作数的默认长度为16位。
(2) 保护模式下,CPU实际可访问的物理空间最大为4GB,可选择使用分页结构;存储器空间用逻辑地址、线性地址和物理地址空间描述;CPU基本结构没有发生变化,指令和寻址方式依旧。在这种寻址方式中,可以对存储器实施保护功能(禁止程序非法操作)和特权级的保护功能(主要保护操作系统的数据不被应用程序修改)。 虚拟8086模式下,既有保护模式功能,又可执行8086的指令代码。 2.答:(1)只要在MAINPRO中用EXTRN说明SUBPRO即可; (2)只要定义SUBPRO时用PUBLIC定义即可。 3.答:(1)AX=4C2AH (2)AX=3412H (3)AX=4C2AH (4)AX=7856H (5)AX=65B7H
4.答:汇编语言源程序的语句类型通常有3种类型,分别是:指令语句、伪指令语句和宏指令语句。
(1)指令语句是能产生目标代码、CPU可以执行的能完成特定功能的语句,主要由CPU指令组成。
(2)伪指令语句是种不产生目标代码的语句,在汇编过程中告诉汇编程序应如何汇编。 (3)宏指令语句是一个指令序列,汇编时凡有宏指令语句的地方都将用相应的指令序列的目标代码插入。
5.答:汇编程序是将汇编源程序自动翻译成目的程序的软件,而汇编源程序是用汇编语言
编写的程序。
汇编程序的主要功能是将由汇编语言(助记符)编写的源程序翻译成用机器语言(二 进制代码)编写的目标程序;汇编源程序的作用是进行程序设计。
6.答:微型计算机的系统总线是CPU与其他部件之间传送数据、地址和控制信息的公共 通道。
根据传送内容的不同,系统总线可分成以下3种:
(1)数据总线DB(Data Bus):用于CPU与主存储器、CPU与I/O接口之间传送数据。数据总线的宽度等于计算机的字长。数据总线一般为双向总线,可以向两个方向传输数据。 (2)地址总线AB (Address Bus):用于CPU访问主存储器和外部设备时传送相关的地址。地址总线的宽度决定CPU的寻址能力。
(3)控制总线CB (Control Bus)用于传送CPU对主存储器和外部设备的控制信号。
7.答:宏与子程序两者的相同之处在于:都是用来处理在编程过程中多次使用的功能程序的方法,两者均能简化源程序。 两者的区别在于:
(1)宏调用通过宏指令名进行,汇编时,随时调用随时展开,并不简化目标程序:子程序调用是在程序执行期间执行CALL指令,代码只在目标程序中出现一次,所以也简化了目标程序。
(2)宏调用时的参数由汇编程序通过实参转换成形参的方式传递,具有很大的灵活性。宏定义中允许设置若干形式参数代替数值、指令、寄存器、各种字符串等。宏调用时可用程序所需要的实际参数来替换,使编程人员感觉非常灵活;而子程序的参数传递要麻烦得多。 (3)宏调用在汇编时完成,不需要额外的时间开销;子程序调用和子程序返回都需要时间,还涉及堆栈操作。
故若优先考虑速度,用宏指令;若优先考虑存储空间,用子程序。 六、程序分析题: 1.答:(1)L1 (2)L1 (3)L2 (4)L3 (5)L3 2.答:AX=3412H,CX=0078H
3. (1)从一组数中寻找最小数送RESULT单元。 (2)31次。 4.解答:
(1)该程序用来将存放在DATA I和DATA2开始的单元中的两个多字节数据相加,并将结果放在SUM开始的连续单元中。
(2)不可以。因为ADD指令影响进位标志位CF状态。 (3)MOV SI,OFFSET DATA1
(4)清进位,以使在数据最低字节相加时,可以用ADC指令。 5.解答:
SI=510H BX=230H 七、程序设计:
1. 参考答案如下: DATA SEGMENT
DAT DW 0A5D2H DAT1 DB ? DAT2 DB ? DAT3 DB ? DAT4 DB ?
DATA ENDS CODE SEGMENT
ASSUME CS:CODE, DS: DATA START:
MOV AX, DATA
MOV DS, AX MOV AX, DAT MOV BX, 0F0FH
AND BX, AX MOV DAT1, BL
MOV DAT3, BH MOV BX, 0F0F0H
AND BX, AX MOV DAT2, BL
MOV DAT4, BH MOV AH, 4CH
INT 21H
CODE ENDS END START
2. 参考答案如下:
分析:假设子程序的入口参数成绩表长度放在CX中,SI指向成绩表首单元;出口参数放在S6, S7,S8,S9和S10单元中,并且各单元初值均为0。参考子程序如下: ;子程序名:GRADES
;功能:统计成绩表GRADES中各个分数段的人数
;入口参数:CX中为成绩表长度,SI指向成绩表首单元
;出口参数:各个分数段人数分别放在存储单元S6, S7,S8,S9和S10中 ;所用寄存器:AL, CX,SI
GRADES PROC
PUSH CX ;保护用到的寄存器 PUSH SI PUSH AX
NEXT: CMP CX,O ;判断成绩表是否结束 JZ EXIT DEC CX
MOV AL,[SI] ;将要比较的成绩放在AL中 INC SI
CMP AL,100
JB GRADE9 ;小于100,转向GRADE9 INC[S10] ;S10单元内容增1 JMP NEXT
GRADE9:CMP AL,90
JB GRADE8 ;小于90,转向GRADE8 INC [S9] ;S9单元内容增1