汇编语言习题及答案

  • 格式:doc
  • 大小:82.00 KB
  • 文档页数:19

汇编语言复习题

简答题

1.存储器地址为什么要分段?物理地址是如何形成的?

2.IBM PC机的寻址方式(与数据有关的寻址方式)有几种?各举一例说明。

3.80x86微机的存储器中存放信息如下图所示。试读出30022H与30024H字节单元的内容与30021H和30022H字单元的内容。

4.现有(DS)= 2000H,(BX)=0100H,(SI)= 0002H, (20100)= 12H,

(20101)=34H, (20102)= 56H, (20103)=78H, (21200)=2AH, (21201)=

4CH, (21202)=B7H, (21203) = 65H,试说明下列各条指令执行完后AX的内容。

1) MOV AX,1200H 2) MOV AX,BX

3) MOV AX,[1200H]

4) MOV AX,[BX]

5) MOV AX,1100[BX]

5.完成下列各式补码数的运算,并根据结果设置标志位SF,CF,ZF,OF,指出运算结果是否有效

1) 01001001b+10011101b

2) 01000001b-10101011b

6.有符号定义语句如下:

BUFF DB 1,2,3,’123’

EBUFF DB 0

L EQU EBUFF-BUFF

问L的值为多少?为什么?

答案:

1、IBM PC系列机的字长为16位,能够访问的最大存储空间64KB,而在IBM PC内存为1MB的情况下,访问这1MB的存储空间需要20位。为了解决字长为16位的机器访问1MB的存储空间,将1MB空间每16B分为一段,共64K段,以16位段地址:16位偏移地址的形式组成,物理地址通过如下方式计算:

物理地址 = 段地址×10h + 偏移地址

2.IBM PC机的寻址方式有7种:

1)立即寻址:MOV AX, 1234H;

2)寄存器寻址:MOV AX, BX;

3)直接寻址:MOV AX, [1234H];

4)寄存器间接寻址:MOV AX, [BX];

5)寄存器相对寻址:MOV AX, 20H[BX];

6)基址变址寻址:MOV AX, [BX][SI];

7)相对基址变址寻址:MOV AX, 100H[BX][SI];

3.解:(30022H)= 12H

(30024H) = 56H

(30021H) = 12CDH

(30022H) = 3412H

4.解:

(1) MOV AX,1200H

解:(AX)=1200H

(2) MOV AX,BX

解:(AX)= 0100H (3) MOV AX,[1200H]

解:物理地址=(DS)×10H+1200H

(AX) = 4C2AH

(4) MOV AX,[BX]

解:物理地址=(DS)×10H+0100H=20100H

(AX)=3412H

(5) MOV AX,1100[BX]

解:物理地址=(DS)×10H+0100H+1100H=21200H

(AX)=4C2AH

5.

(1)01001001b+10011101b

解:

01001001

+ 10011101

————————

11100110 由此可得:SF=1 CF=0 ZF=0 OF = 0 计算结果有效

(2)01000001b-10101011b

解:

01000001

- 10101011

———————— => 01000001

+ 01010101

————————

10010110 由此可得:SF=1 CF=1 ZF=0 OF=1

减法计算中,被减数、减数符号相反,结果符号与减数相同,OF=1计算结果无效

6.有符号定义语句如下:

BUFF DB 1,2,3,’123’

EBUFF DB 0

L EQU EBUFF-BUFF

问L的值为多少?为什么?

解:根据数据段的定义,BUFF长度定义为6个字节,分别存放1,2,3,‘1’,‘2’,‘3’,而后紧接着为EBUFF的地址,故L值为6

程序题

1 MOV BL,64H

MOV CL,03H

XOR AX,AX

AGAIN:ADD AL,BL

ADC AH,0 DEC CL

JNZ AGAIN

问:(1)该程序段完成的功能是:

(2)AX=________。

2 已知数据段中定义

DAT1 DB 12H,34H,56H,78H

MOV CX,0

MOV AX,WORD PTR DAT1

MOV CL,DAT1+3

当程序段执行完后AX=________,CX=________。

3 DA1 DB 83H,72H,61H,94H,5AH

MOV CX,WORD PTR DA1

AND CX,0FH

MOV AL,DA1+3

SHL AL,CL

上述指令序列执行后,AL=_______,CL=_______。

4、 某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。 STRING DB‘COMPUTER’,‘$’

MOV BX,0FFSET STRING

LOP:MOV DL,[BX]

MOV AH,02H

INT 21H

____________________

____________________

JNE LOP

答案:

1、AX=012CH,将AX内容乘3送BX中

2、AX=3412H,CX=0078H

3、AL=0A0H,CL=03H

4、INC BX

CMP [BX],24H

名词解释

1.机器语言

2.汇编语言

3.堆栈

4.物理地址 5.汇编程序

6.SP:

7.IP:

答案:

1、 机器语言:能被计算直接识别的恶语言;

2、 汇编语言:用指令的助记符、符号地址、标号等符号书写程序的语言;

3、 堆栈:以后进先出(或先进后出)方式工作的存储空间;

4、 物理地址:唯一代表存储空间中每个字节单元的地址;

5、 汇编程序:把汇编语言程序翻译成机器语言的系统程序。

6、 SP:保存当前栈顶地址的寄存器;

7、 IP:指示下一条要执行指令的地址的寄存器

编程题

1、试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。

2、试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为 奇数,则将进位位置1,否则进位位清0。

DATA SEGMENT

DA1 DW XXXX

DATA ENDS 3、已知在N到N+i的存储区内有一ASCII码字符串(共i+1个),试编写一个汇编语言程序,将此字符串传送到NI到NI+i单元中,并使字符串的顺序与原顺序相反。(只写出关键代码段即可)(6)

1、 编写程序,求解sum= 1001iai=a1+a2+„+a100,要求写出完整程序。(9)

2、 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。只写关键代码段即可(8)

3、 试编写一程序,比较两个字符串STRING1与STRING2所含有的字符是否完全相同,若相同则显示“MATCH”,如不同则显示“NO

MATCH”,字符串内容自定义,要求写出完整的程序。(12)

答案:1、 LEA DI,DA_BY

MOV CX,32

MOV AL,‘Y’

CLD

REP STOSB。

2、 CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX LEA SI,DA1

MOV CX,16

XOR BL,BL

AGAIN: MOV AL,[SI]

HL AL,1

JC NEXT

INC BL

NEXT:INC SI

LOOP AGAIN

TEST BL,01H

JNE L1

CLC

JMP DONE

L1: STC

DONE: MOV AH,4CH

INT 21H

CODE ENDS

END START

3、解:

LEA SI,N

LEA DI,NI

ADD DI,I MOV CX, I

ADD CX,1

MOVE:

CLD

LODSB

STD

STOSB

LOOP MOVE

4、解:

DATA SEGMENT

ARR DW a1, a2, a3, a4, a5, a6, „, a100

SUM DW ?

DATA ENDS

CODE SEGMENT

ASSUME DS: DATA, CS: CODE

START:

MOV AX, DATA

MOV DS, AX

LEA BX, ARR

MOV CX, 100

MOV AX, 0

AGAIN: