接口与汇编程序设计作业答案

接口与汇编程序设计作业答案
接口与汇编程序设计作业答案

习题1(教材P56)

1.8086/8088微处理器地址总线有多少位?寻址范围是多少?

答:20位 A0-A19。寻址范围00000H-FFFFFH

2.8086/8088微处理器分哪两部分?各部分主要由什么组成?

答:执行单元EU和总线接口单元BIU。

EU包括:ALU、寄存器组、暂存器、标志寄存器、EU控制单元。

BIU包括:指令队列缓冲器、段寄存器及指令指针、总线地址加法器、总线控制逻辑。

4.8086/8088微处理器中有几个通用寄存器?几个变址寄存器?有几个指针寄存器?几个段寄存器?

答:8个通用寄存器AX、BX、CX、DX、SP、BP、SI、DI。2个变址寄存器SI、DI。2个指针寄存器SP、BP。DS、ES、SS、CS段地址寄存器。

5.8086/8088微处理器中有哪些标志位?它们的含义和作用如何?

答:零标志位ZF、进位标志CF、溢出标志位OF、辅助进位标志位AF、奇偶标志位PF、符号标志位SF、方向标志位DF、中断允许标志位IF、跟踪标志TF。

6.试求出下列运算后的各个状态标志,说明进位标志和溢出标志的区别?

1278H+3469H

答:0001 0010 0111 1000

+0011 0100 0110 1001

0100 0110 1110 0001

ZF=0;SF=0;CF=0;OF=0;AF=1;PF=1。

54E3H-27A0H

答:0101 0100 1110 0011

+1101 1000 0110 0000(-27A0的补码)

10010 1101 0100 0011

ZF=0;SF=0;CF=1;OF=0;AF=0;PF=0。

3881H+3597H

答:0011 1000 1000 0001

+0011 0101 1001 0111

0110 1110 0001 1000

ZF=0;SF=0;CF=0;OF=0;AF=0;PF=1。

01E3H-01E3H

答:0000 0001 1110 0011

+1111 1110 0001 1101(-01E3H的补码)

10000 0000 0000 0000

ZF=1;SF=0;CF=1;OF=0;AF=1;PF=1。

进位表示最高位产生进位。

溢出表示超出数的表示范围。OF=C

n ○﹢C

n-1

8.什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?

答:逻辑地址:产生实际地址的两个地址分量:首地址和偏移地址。物理地址:内存单元地址。用户在编写程序时只使用逻辑地址。程序装到内存中使用物理地址。物理地址可以通过逻辑地址求得。

9.设现行数据段位于存储器的B0000H到BFFFFH存储单元,DS段寄存器内容为多少?答:DS=B000H

11.8086/8088微处理器工作在最小模式和最大模式时的主要特点是什么?有何区别?

答:最小模式只有一个CPU不需要总线控制器。最大模式有多个微处理器,必须要总线控制器来对总线控制权进行分配。引脚MN/MX=1工作在最小模式。MN/MX=0工作在最大模式。

13.80486地址总线宽度为多少?数据总线宽度为多少?

答:80486地址总线宽度为32位(分成4个块,每个块为8位字长,块有A1,A0选择)有数据总线宽度为32位。

14.现有6个字节的数据分别为11H,22H,33H,44H,55H,66H,已知它们在存储器中的物理地址为400A5H~400AAH,若当前的(DS)=4002H,请说明它们的偏移地址值。如果从存储器中读出这些数据,至少需要访问几次存储器,各读出哪些数据?

解:∵物理地址=(DS)×16+偏移地址,

∴偏移地址=物理地址-(DS)×16=400A5H~400AAH-40020H=85H~8AH

至少需要访问四次存储器,每次读出一个字,即11H,3322H,5544H,66H。(注意由于8086CPU访问内存时如果按字存储采用的是偶对齐方式),这六个数在存储器中的存放位置如图所示。

4002:0085

4002:0086

4002:0087

4002:0088

4002:0089

4002:008A

习题2(教材P105)

1.已知DS=2000H,BX=0100H,SI=0002H,存储单元[20100H]~[20103H]依次存放12 24 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行后AX寄存器的内容。

(1) MOV AX, 1200H

解:AX=1200H

(3) MOV AX, [1200H]

解:物理地址=D S×16+1200H=20000H+1200H=21200H,所以AX=4C2AH

(5) MOV AX, [BX+1100H]

解:物理地址=D S×16+BX+1100H=20000H+0100H+1100H=21200H ,所以AX=4C2AH

(7) MOV AX, [BX][SI+1100H]

解:物理地址=D S×16+BX+SI+1100H=20000H+0100H+0002H+1100H=21202H ,所以AX=65B7H (2) MOV AX, BX

解:AX=0100H

(4) MOV AX, [BX]

解:物理地址=D S×16+BX=20000H+0100H=20100H,所以AX=2412H

(6) MOV AX,[BX][SI]

解:物理地址=D S×16+BX+SI=20000H+0100H+0002H=20102H,所以AX=7856H

2.指出下列指令错误

(1) MOV CX, DL

答:数据类型不匹配,CX是16位,DL是8位。

(2) MOV IP, AX

答:指令指针不能直接修改。

(3) MOV ES, 1234H

答:段地址寄存器不能直接置数。

(4) MOV ES, DS

答:段地址DS不能做源操作数。

(5) MOV AL, 300

答:300大于255,AL是8位的,最多只能存255

(6) MOV [SP], AX

答:SP不能做间接寻址寄存器。

(7) MOV AX , BX+DI

答:基址变址寻址必须打[]。

(8) MOV 20H, AH

答:立即数不能做目的地址单元。

3.已知数字0~9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存放在于以TABEL为首地址(设为200H)的连续区域中。对如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。

LEA BX,TABLE ;取表的首地址送BX,执行后(BX)=200H

MOV AL,8 ;立即数8送AL,执行后,(AL)=8

XLAT ;查表,将表首地址+8((BX)+(AL))所对应单元内容送AL,

;执行后,(AL)=12H(8所对应的格雷码)

4.什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令? 答:堆栈是在内存中开的一个特殊的数据区,堆顶有堆栈指针SP 与SS 共同决定。 原则是:先进后出,

两个操作:入栈、出栈,对应指令:PUSH(入栈)、POP(出栈)。

5.已知SS=FFA0H ,SP=00B0H ,画图说明执行下列指令序列时,堆栈区和SP 的内容如何变化? MOV AX , 8075H PUSH AX MOV AX , 0F79H PUSH AX

POP BX POP [BX]

解:

8.请分别用一条汇编语言指令完成如下功能:

(1)把BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器。

FFA0:00AE SP → FFA0:00AF FFA0:00B0

FFA0:0000

执行完

MOV AX , 8075H PUSH AX 指令后

SP=00AEH

FFA0:00AC SP →FFA0:00AD FFA0:00AE FFA0:00AF FFA0:00B0

FFA0:0000

再执行完

MOV AX , OF79H PUSH AX 指令后 SP=00ACH

FFA0:00AE SP → FFA0:00AF FFA0:00B0

FFA0:0000 再执行完

POP BX 指令后

SP=00AFH

FFA0:00AE FFA0:00AF

FFA0:00B0 SP →

FFA0:0000

再执行完

POP [BX] 指令后 SP=00B0H

解:ADD DX, BX

(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送AL中。

解:ADD AL, [BX+SI] 或ADD AL, [BX][SI]

(3)用寄存器BX和02BH的寄存器相对寻址方式,把存储器的一个字和CX寄存器的内容相加,并把结果送回存储器中。

解:ADD [BX+02BH] ,CX 或ADD 02BH [BX] ,CX

(4)把数0A0H与AL寄存器内容相加,并把结果送AL中。

解:ADD AL, 0A0H

10.指出下列指令错误

(1)XCHG [SI], 30H

答:立即数不能作为单元地址来保存数据,所以交换指令中的两个操作数必须是地址操作数。

(2)POP CS

答:CS不能作为寻址寄存器使用

(3)SUB [SI], [DI]

答:算术运算指令中的两个操作数不能同时都在内存中

(4)PUSH AH

答:PUSH指令中的操作数必须是16位操作数,AH是8位

(5)ADC AX, DS

答:DS不能做源操作数,

(6)OUT DX, AH

答:只能使用AL(当端口数据位是8位)或AX(端口数据位是16位)与端口交换数据(7)IN AL 3FCH

答:端口地址大于255时,必须有DX寄存器间接寻址。

20.假设DS=2000H,BX=1256H,SI=528FH,位移量TABLE=20A1H,[232F7H]=3280H,[264E5H]=2450H,试问执行下列段内间接转移指令后,转移的目的地址是什么?

(1) JMP BX

(2) JMP TABLE[BX]

(3) JMP [BX][SI]

解:(1)JMP BX,目标地址的偏移量在BX中,所以转移的目的地址是CS:1256H(也可以直接写成有效地址IP=1256H)。

(2) JMP TABLE[BX],目标地址的偏移量在存储器单元中,该存储器单元有效地址为(BX)+ TABLE中,所对应的物理地址=DS×16+(BX)+TABLE=20000H+1256H+20A1H=232F7H,该单元存放的内容为3280H,所以JMP TABLE[BX] 转移的目的地址是CS:3280H(也可以直接写成有效地址IP=3280H)

(3)JMP [BX][SI] 目标地址的偏移量在存储器单元中,该存储器单元有效地址为(BX)+ (SI)中,所对应的物理地址=DS×16+(BX)+(SI)=20000H+1256H+528FH=264E5H,该单元存放的内容为4500H,所以JMP TABLE[BX] 转移的目的地址是CS:4500H(可以直接写成有效地址IP=4500H)。

23.假设AX和SI存放的是有符号数,DX和DI存放的是无符号数,请用比较指令和条件转

移指令实现以下判断:

(1)若DX>DI,转到ABOVE执行;

(2)若AX>SI,转到GREATER执行;

(3)若CX=0,转到ZERO执行;

(4)若AX-SI产生溢出,转到OVERFLOW执行;

(5)若SI≤AX,转到LESS_EQ执行;

(6)若DI≤DX,转到BELOW_EQ执行。

解:(1)CMP DX,DI

JA ABOVE

(2)CMP AX,SI

JG GREATER

(3)CMP CX,0

JE ZERO

(4)CMP AX,SI

JO OVERFLOW

(5) CMP SI,AX

JLE LESS_EQ

(6) CMP DI,DX

JBE BELOW_EQ

选做题

14题(P107).已知数据段500H~600H中存放了一字符串,说明下列程序段执行后的结果。

MOV SI, 600H

MOV DI, 601H

MOV AX, DS

MOV ES, AX

MOV CX, 256

STD

REP MOVSB

24题(P108).有一个首地址为ARRAY的20个字的数组,说明下列程序的功能。

MOV CX, 20

MOV AX, 0

MOV SI, AX

SUM_LOOP: ADD AX, ARRAY[SI]

ADD SI, 2

LOOP SUM_LOOP

MOVE TOTAL, AX

25题(P109).按照下列要求,编写相应的程序段:

⑴起始地址为STRING的主存单元中存放有一个字符串(长度大于6),把该字符串的第一和第六字符(字节变量)传送给DX,

解:

MOV SI, 0

MOV DL , STRING[SI]

MOV DH , STRING[SI+5]

⑵从主存BUFFER开始的4个字节中保存了4个非压缩的BCD码,现按低(高)地址对低(高)位的原则将它们合并到DX中

解:

MOV SI, 0

MOV AL , BUFFER[SI]

AND AL, 0FH

MOV AH , BUFFER[SI+1]

AND AH, 0FH

MOV CL, 4

SHL AH, CL

ADD AL,AH

MOV DL,AL

MOV AL , BUFFER[SI+2]

AND AL, 0FH

MOV AH , BUFFER[SI+3]

AND AH, 0FH

MOV CL, 4

SHL AH, CL

ADD AL,AH

MOV DH,AL

⑶编写一个程序段,在DX 高4位全为0时,使AX=0;否则使AX=-1

解:

AND DX, 0F000H

JZ ZERO

MOV AX 0FFFFH;[-1]补码=FFFFH

JMP JEND

ZERO: MOV AX,0

JEND: HALT

26题(P109).按下述要求,分别给出3种方法,每种方法只用一条指令。

⑴使CF=0

解:

方法一:CLC

方法二:ADD AL, 0

方法三:SUB AL, 0

②使AX=0

解:

方法一:MOV AX, 0000H

方法二:AND AX, 0000H

方法三:SUB AX, AX

③同时使AX=0和CF=0 解:

方法一:SUB AX, AX

方法二:AND AX, 0000H 方法三:XOR AX, AX

习题3(教材P182)

1.伪指令语句与硬指令语句的本质区别是什么?伪指令语句有什么主要作用?

答:区别:伪指令语句是汇编程序可以识别和解释语句(CPU不能直接执行),硬指令语句是CPU可以执行的语句。

伪指令语句主要作用是为汇编程序提供解释说明,它仅仅是在汇编过程中告诉汇编程序如果进行汇编。

2.什么是标识符?汇编程序中标识符怎样组成?

答:是用户自己定义的符号名。在汇编程序中标识符有两种:标号标识符,用在指令语句中,后面跟冒号,表示程序入口的逻辑地址。符号(或名字)标识符,用在伪指令语句中,后面不跟冒号,通常是定义一个变量,或说明变量类型。标识符一般不超31个字符,数字及常规符号($、@、?等)不能打头,也不能使用保留字。标识不区分大小写。

4.汇编语句有哪两种,每个语句有哪4部分组成?

答:指令语句(又称执行语句)和伪指令语句(又称说明性语句)。指令语句4部分包括,①标号:、②硬指令助记符、③操作数、④;注释。伪指令语句4部分包括,①符号名、②伪指令助记符、③参数、④;注释。

5.汇编程序开发有哪4个步骤?分别利用什么程序完成,产生什么输出文件?

答:①编辑。使用文本编辑器。产生汇编源程序文件: 文件名.ASM。源文件是文本文件。

②汇编。使用汇编程序,如MASM或ML,排除程序中的语法错误。产生目标文件:文件名.OBJ。目标文件是二进制文件,是不能执行的文件。

③连接。使用LINK。产生可执行文件:文件名.EXE.

④调试。使用DEBUG。本身不产生文件,是对连接产生的可执行进行调试,排除程序中的算法错误,保证可执行文件的正确性。

7.假设MYWORD是一个字变量,MYBYTE1和MYBYTE2是两个字节变量,指出下列语句中的错误原因。

(1) MOV BYTE PTR[BX], 1000

答:数据类型不匹配,目的地址单元是字节单元,1000大于255。无法存放。

(2) MOV BX, OFFSET[SI]

答:OFFSET后只能跟标识符。

(3) CMP MYBYTE1, MYBYTE2

答:CMP的两个操作数不能同时在存储器中。

(4) MOV AL, MYBYTE1+MYBYTE2

答:运算符只能对常数进行操作,不能对变量进行操作。

(5) SUB AL, MYWORD

答:数据类型不匹配,AL是8位的,MYWORD是16位变量。

(6) JNZ MYWORD

答:MYWORD是变量,其指的单元中存放的是操作数,不能用做跳转入口。

8.OPRL是个常数,请问下列语句中两个AND操作有什么不同?

AND AL, OPRL AND 0FEH

答:第一个AND是指令语句,在程序运行时才执行,第二个AND是逻辑运算符,是在汇编时就对两个常量完成的关系运算。

选做题

22题(P184).编写程序完成两个已知双精度(4B)A和B相加,并将结果存入双精度变量单元SUM中(不考虑溢出)

A DD ?

B DD ?

SUM DD?

MOV AX, WORD PTR A

ADD AX, WORD PTR B

MOV WORD PTR SUM AX

MOV AX, WORD PTR A+2

ADDC AX, WORD PTR B+2

MOV WORD PTR SUM+2 AX

22题(P184).编写程序完成12H,45H,0F3H 6AF,20H,0FEH,90H,0C8H,57H和34H 共10字节数据之和,并将结果存入字节变量SUM中(不考虑溢出)。

DAT1 DB 12H,45H,0F3H6AF,20H,0FEH, 90H, 0C8H, 57H,34H

MOV CX, 10

MOV AL, 0

LEA SI ,DAT1

SUM_LOOP: ADD AL, [SI]

INC SI

LOOP SUM_LOOP

MOVE SUM, AL

25题(P185).编写一个程序段,将AX寄存器中的16位数连续4位分成一组,共

4组,然后把这4组数分别放在AL、BL、CL和DL中。

MOV BX, AX

AND AL, 0FH

MOV CL, 4

SHR BL, CL

AND BL, 0FH

MOV DL, AH

SHR DL, CL

AND DL, 0FH

MOV CL, AH

AND CL, 0FH

27题(P185).已知用于LED数码显示的代码表位为:LEDTABLE DB 0C0H,0FCH,0A4H, 0B0H,99H,92H,82H,0F8H,80H,90H,88H,

83H,0CCH,0C1H,86H,8EH

它依次表示0~9,A~F这16个数码的显示代码。现编写一个程序实现将LEDNUM 中的一个数字(0~9,A~F)转换成对应的LED显示码。

LEA BX LEDTABLE

MOV AL, LEDNUM

XLAT

26题(P185).编写一个程序,把从键盘输入的一个小写字母转换成大写字母显示出来

MOV AH, 08H; 不带显示的键盘输入(字符以ASCII码存AL中)

INT 21H

AND AL, 1101 1111

MOV DL, AL;将要显示字符的ASCII码DL

MOV AH, 02H ;调显示

INT 21H

32题(P185).不用串操作指令,求主存0040H:0开始的一个64KB物理段中共有多少空格?编写程序实现。

MOV AX,0040H

MOV DS, AX

MOV SI, 0

MOV CX,0

MOV DX,0

L0:MOV AL,[SI]

INC SI

CMP AL,20H ; 20H空格的ASCII码

JNZ L1

INC DX

L1:LOOP L0

HLT

习题4(教材P280)

15.8255A有哪几种工作方式,对这些工作方式有什么规定?

答:8255A有三种工作方式。分别是方式0(基本的输入输出方式);方式1(选通的输入输出方式);方式2(双向传输方式)。

方式0:不需要应答联络信号。A、B、C口都可以工作在方式0。

方式1:选通的输入输出方式,只有A、B端口可以工作在方式1,C端口作为A、B端口的应答信号。而且是单向的,作为输入端口,就不能做输出端口,作为输出端口就不能做输入端口。

方式2:双向传输方式,只有A端口可以工作在方式2,C端口做为A端口输入输出时的应答信号,可以工作在输入,也可以工作在输出。

16.假设8255A端口地址为00C0~00C6H,要求:

(1)对8255A设置工作方式,A端口工作在方式1,输入;B端口工作在方式0,输出;端口C的4为配合端口A工作,端口C的低4为方式0,输入。

(2)用置0∕置1,直接对PC6置1,对PC4置0

答:端口地址0000 0000 1100 0000 ~0000 0000 1100 0110。说明A口地址为00C0H,B 口地址为00C2H,C口地址为00C4H,控制字地址为00C6H。

(1)控制字为:1011X001B,即0B1H(X取0)

MOV AL,0B1H

MOV DX,00C6H

OUT DX,AL

(2)直接对PC6置1时的控制字为:0XXX1101B,即0DH

MOV AL,0DH

MOV DX,00C6H

OUT DX,AL

直接对PC4置0时的控制字为:0XXX1000B,即08H

MOV AL,08H

MOV DX,00C6H

OUT DX,AL

17.使用8255A作为开关和LED指示灯的接口。要求8255A的A口连接8个开关,B口连接8个LED(发光二极管),用作指示灯,将A口的开关状态读入,然后送至B口控制指示灯亮、灭。试画出接口电路设计图,并编写程序实现。

解:根据要求,设计电路如图所示。用PA7引脚上的开关控制PB7上的LED,PA0引脚上的开关控制PB0上的LED。开关闭合输入低电平,开关打开输入高电平。高电平指示灯亮。A端口地址为8000H,B端口地址为8001H ,C端口地址为8002H ,控制字寄存器地址为8003H(假设未使用的地址线都取0)。

控制字:10010000B(C口工作在输出),即90H

参考程序:

MOV AL, 90H

MOV DX, 8003H

OUT DX, AL

LOOP: MOV DX, 8000H

IN AL, DX

MOV DX, 8001H

OUT DX, AL

JMP LOOP

3.若8253芯片的接口地址为D0D0H~D0D3H,时钟信号为2MHz,现利用计数器0、1、2分别产生周期为10us的方波,每隔1ms和10ms(1s)产生一个负脉冲,试画出系统的连线图。并写出初始化程序。

解:定时器0的计数初值=10×10-6×2×106=20,工作在方式3。控制字:00010111(17H)定时器1的计数初值=1×10-3×2×106=2000,工作在方式2。控制字:01110101(75H)定时器2的计数初值=10×10-3×2×106=20000=4E20H,工作在方式2。控制字:10110100(B4H)。

注意:1s定时器2的计数初值=2×106=2000000(超过16位计数器计数范围65536,采样2级计数,有计数1的输出OUT1作为计数器2的CLK2的计数脉冲。所以计数器2的计数常数1000

初始化程序:

MOV AL,17H

MOV DX, 0D0D3H

OUT DX, AL

MOV AL,20

MOV DX, 0D0D0H

OUT DX, AL

MOV AL,75H

MOV DX, 0D0D3H

OUT DX, AL

MOV AX,00H

MOV DX, 0D0D1H

OUT DX, AL ;先送计数值低位

MOV AL,20H

OUT DX, AL ;再送计数值高位

MOV AL,0B4H

MOV DX, 0D0D3H OUT DX, AL MOV AX,1000

MOV DX, 0D0D2H OUT DX, AL ;先送计数值低位 MOV AL,AH OUT DX, AL ;再送计数值高位

4.某计算机系统采用8253的计数0作为频率发生器,输出频率500Hz ,利用计数器1产生1000Hz 的方波,输入的时钟频率为1.19MHz 。请问计数器0和计数器1工作在什么方式下?计数初值分别是多少?

解:计数器0工作方式2,计数器1工作方式3下。

计数0初值=1.19×106

÷500=2380

计数2初值=1.19×106

÷1000=1190

5.利用8254的通道1,产生500Hz 的方波信号。设输入时钟的频率CLK1=2.5MHz ,端口地址为FFA0H~FFA3H ,试编制初始化程序。 解:计数器1工作方式3下。

计数1初值=2.5×106

÷500=5000 控制字:01110111(77H ) 初始化程序:

MOV AL,77H

MOV DX, 0FFA3H OUT DX, AL MOV AL,00H

MOV DX, 0FFA1H OUT DX, AL ;先送计数值低位

0 0 1 1 1

2 2 2

MOV AL,50H

OUT DX, AL ;再送计数值高位

6.某系统使用5254的通道0作为计数器,计满1000,向CPU发中断请求,试编写初始化程序(端口地址自设)。

解:计数器0工作方式0下。(假设端口地址为FFA0H~FFA3H)

计数0初值=1000

控制字:00110001(31H)

初始化程序:

MOV AL,31H

MOV DX, 0FFA3H

OUT DX, AL

MOV AL,00H

MOV DX, 0FFA0H

OUT DX, AL ;先送计数值低位

MOV AL,10H

OUT DX, AL ;再送计数值高位

习题5(教材P208)

3.8259A的初始化命令字有哪些?各自如何定义?如何解决地址问题。

答:有4个。分别为ICW1、ICW2、ICW3、ICW4。

各自定义参考教材。

首先在偶地址(A0=0)送ICW1(D4=1),然后在奇地址(A0=1)根据顺序分别送ICW2→ICW3→ICW4。其中ICW2必须送,单片不需要送ICW3,是否送ICW4有ICW1中的D0位是否为1决定。D0=1送ICW4,并且8086系统必须送ICW4。

4.假设8259A的端口地址为92H、93H,如何用它的命令字来禁止IR3和IR5引脚上的请求,又如何撤销这一禁止命令?

解:运用操作命令字OCW1来完成,该操作命令字是奇地址93H

IN AL 93H

OR AL,00101000

OUT 93H,AL

撤销:

IN AL 93H

AND AL,11010111

OUT 93H,AL

5.假设8259A的端口地址为92H、93H,按照如下要求对8259A设置初始化命令字,系统中只有一片8259A,中断请求信号采用电平触发,中断类型码为60H~67H,用特殊嵌套,不用缓冲方式,采用中断自动结束方式。

解:ICW1:00011011(1BH;一片8259A,中断请求信号采用电平触发,设置ICW4)ICW2:60H(中断类型码60 H~67H)

单片不需要ICW3

ICW4:00010111(17H;用特殊嵌套,不用缓冲方式,采用中断自动结束方式)

MOV AL, 1BH

OUT 92H,AL

MOV AL, 60H

OUT 93H,AL

MOV AL, 17H

OUT 93H,AL

P352

2.A/D和D/A转换器在微机控制系统中起什么作用?

答:A/D负责将输入的模拟信号转换成数字信号供计算机处理。

D/A:负责将计算机处理完的数字信号转换为模拟信号去控制外部设备。

7.图是通过1个主8259中断控制器接2个从8259中断控制器。请根据接线图回答以下问题:

(1).主中断控制器和两个从中断控制器的中断控制字ICW3分别是多少?

(2).现在程序正在执行从中断控制器8259 A的中断服务程序,那么主中断服务寄存器ISR的内容为多少?

(3). 假设主中断控制字的中断优先级从高到低为IR0→IR7,如果主中断服务寄存器ISR的内容为24H,请问现在CPU执行的是哪个从中断控制器的中断服务程序。

答:主中断控制器ICW3=00100100=24H

从8259A中断控制器ICW3=00000101=05H

从8259B中断控制器ICW3=00000011=03H

(2).ISR=00100000=20H

(3)答:ISR=24H=00100100,说明现在是中断嵌套,由于主中断控制字的中断优先级从高到低为IR0→IR7,所以现在正在执行的是从8259B的中断服务程序。

【汇编语言程序设计】试题及答案合集

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B)A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B)A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段的是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。 B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价的值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B) A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每小题4 分,共 20 分) 1.下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

汇编语言程序的设计试卷与答案

汇编语言程序设计试卷 一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20分) 1.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。 ① 无符号十进制数136 ② 带符号十进制数-120 ③ 压缩型BCD码十进制数88 ④ 8位二进制数-8的补码表示 2.指令指针寄存器是()。 ① IP ② SP ③ BP ④ PSW 3.当执行指令ADD AX,BX后,若AX的内容为2BA0H, 设置的奇偶标志位PF=1,下面的叙述正确的是()。 ① 表示结果中含1的个数为偶数 ② 表示结果中含1的个数为奇数 ③ 表示该数为偶数 ④ 表示结果中低八位含1的个数为偶数 4.完成将累加器AL清零,并使进位标志CF清零, 下面错误的指令是()。 ① MOV AL,00H ② AND AL,00H

③ XOR AL,AL ④ SUB AL,AL 5.下列指令执行后总是使CF=0,OF=0的是()。 ① AND ② NEG ③ NOT ④ INC 6.完成同指令XCHG AX,BX相同功能的指令或指令序列是()。 ① MOV AX,BX ② MOV BX,AX ③ PUSH AX POP BX ④ MOV CX,AX MOV AX,BX MOV BX,CX 7.设AH=0,AL=06H,BL=09H,执行指令 ADD AL,BL AAA 之后,其结果应是()。 ① AH=01,AL=05 ② AH=1 AL=15 ③ AH=0 AL=0FH ④ AH=0 AL=05 8.设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF的值为

汇编语言程序设计实验教程

汇编语言程序设计实验教程

目录 第一章上机过程 (4) 1.1编辑源程序 (4) 1.2 汇编源程序 (5) 1.3连接目标程序 (6) 1.4运行程序 (7) 第二章DEBUG命令祥解 (8) 2.1 DEBUG程序使用 (8) 2.2 DEBUG的常用命令 (8) 第三章汇编语言程序设计实验 (13) 3.1实验一顺序与分支程序设计 (13) 3.2 实验二循环与子程序程序设计 (15) 3.3 实验三算术运算与代码转换程序设计 (16) 3.4 实验四字符串的匹配与替换程序设计 (18) 3.5 实验五输入输出程序设计 (19) 第四章部分实验参考答案 (21)

第一章上机过程 1.1编辑源程序 汇编语言源程序:用汇编语句编写的解决应用问题的程序。 汇编程序:将汇编语言源程序翻译成机器语言程序的系统。 汇编:将汇编语言程序翻译成机器语言程序的过程。 在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。 (1)编辑软件 编辑软件:EDIT、QE、WORD、NOTEPAD等。 当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。 (2)汇编程序 有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。 (3)连接程序 用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的目标代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。 (4)辅助工具程序(.EXE) 进行汇编语言程序调试和文件格式转换的程序有: https://www.360docs.net/doc/0f18505787.html, 动态调试程序 EXE2BIN.EXE文件格式转换程序

汇编语言程序设计期末考试题

汇编语言程序设计期末考试题 学院(系):学号: 姓名: 计分: 一、项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号 内。每小题1分,共10分) 1.CPU发出的访问存储器的地址是( ) A.物理地址 B.偏移地址C.逻辑地址D.段地址 2.将高级语言的程序翻译成机器码程序的实用程序是( ) A.编译程序 B.汇编程序 C.解释程序 D.目标程序 3.DEC BYTE PTR[BX]指令中的操作数的数据类型是( ) A.字 B.双字C.字节D.四字 4.在下列语句中,BUFFER称为( ) BUFFER DB 01H,0AH A.符号 B.变量 C.助记符D.标号 5.串操作指令中,源串操作数的段地址一定在( )寄存器中。 A. CS B. SS C. DS D. ES 6.使计算机执行某种操作的命令是( ) A.伪指令B.指令 C.标号D.助记符 7.将数据5618H存放在存储单元中的伪指令是( ) A. DATA1 DW 1856H B. DATA1 DB 18H,56H C. DATA1EQU 5618H D. DATA1 DB 18H,00H,56H,00H 8.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( ) A.1400H B. 77F8H C. 0000H D. 0FFFFH 9.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍 采用的是( )码。 A. BCD码 B.二进制码 C.ASCII码D.十六进制码 10.用指令的助记符、符号地址、标号和伪指令、宏指令以及规定的格式书写程序的语 言称为( ) A.汇编语言 B.高级语言 C.机器语言 D.低级语言 二、填空题(每空1分,共20分) 1.在8086/8088汇编语言中,有五条串操作指令,其中搜索字符串指令的助记符是______。 2.通常所说的计算机系统包括________和________两大部分。 3.8086/8088存储器分四个段,这四个段的段名所对应的段寄存器分别是________、_____ ___、________、________。 4.现有AX=2000H,BX=1200H, DS=3000H, DI=0002H, (31200H)=50H,(31201H)=02H, (31202H)=40H,请写出下列各条指令独立执行完后有关寄存器及存储单元的内容,并指出标 志位ZF、CF的值。 A.ADDAX,1200H;问AX=________H,ZF=________

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

实验一基础汇编语言程序设计

实验一基础汇编语言程序设计 实验目的 1.学习和了解TEC-XP十六位机监控命令的用法; 2.学习和了解TEC-XP十六位机的指令系统; 3.学习简单的TEC-XP十六位机汇编程序设计。 实验内容 1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容; 2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。 3.学习联机使用TEC-XP教学试验系统和仿真终端软件。 实验要求 在使用该教学机之前,应先熟悉教学机的各个组成部分及其使用方法。 实验步骤 1.关闭电源,将大板上的COMl口与PC机的串口相连; 2.接通电源,在PC机上运行PCEC.EXE文件,设置所用PC机的串口为“l”或“2”,其它的设置一般不用改动,直接回车即可; 3.置控制开关为001110(连续、内存读指令、组合逻辑、16位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。其它实验相同; 4.按一下“RESET”按键,再按一下“START”’按键,主机上显示: 5.用R命令查看寄存器内容或修改寄存器的内容 1.用R命令查看寄存器或修改寄存器内容 1)在命令行提示符状态下输入: R↙;显示寄存器的内容 注:寄存器的内容在运行程序或执行命令后会发生变化。

2)在命令行提示符状态下输入: R R0↙;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格, 也可有—个或数个空格 主机显示: 寄存器原值:xxxx 在后面输入新的值0036 再用R命令显示寄存器内容,则R0的内容变为0036。 2.用D命令显示存储器内容 在命令行提示符状态下输入: D 2000↙ 会显示从2000H地址开始的连续128个字的内容; 连续使用不带参数的D命令,起始地址会自动加128(即80H)。

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著) 《计算机操作系统原理》 《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。 《数据结构和算法》——这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时) 《软件工程》——这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华) 《Windows 程序设计》——《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本 建议:你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书 关于编程的网站 计算机编程 郭新明-FTP服务器体验式学习课程(张孝祥监制) https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=3997 https://www.360docs.net/doc/0f18505787.html,快速开发新闻系统在线播放 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=4708 数字电路基础[宁波电大] https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=774 计算机组成与汇编语言程序设计(赵丽梅)宁波电大 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=1242 操作系统(陈访荣)宁波电大(在线播放) https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=4708 计算机网络(马敏飞)宁波电大 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=1243 https://www.360docs.net/doc/0f18505787.html, 2.0快速入门(12)-https://www.360docs.net/doc/0f18505787.html, 2.0网站快速导航 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=2501 Internet和Intranet应用(薛昭旺)宁波电大 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=1245 2004年电脑硬件安装调试维修视频教学讲授 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=4825 https://www.360docs.net/doc/0f18505787.html, 高级排错技巧 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=768 SQL Server 2000管理专家系列课程 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=4832 开心三人行系列(2):使用Atlas 构建AJAX应用 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=2564 Visual Basic 2005开发技巧系列课程(4): 在Visual Basic 2005中使用.NET Framework 2.0新增功能 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=2526 SQL Server 2005 系列课程-使用ADO https://www.360docs.net/doc/0f18505787.html,开发SQL Server 2005 OLAP应用 https://www.360docs.net/doc/0f18505787.html,/so/so138.aspx?id=2535

汇编语言程序设计试题A卷

陕西电子信息职业技术学院考试试卷(A) 2011至2012学年度第一学期 期末 班级: 09成教 课程: 汇编语言程序设计 题 号 一 二 三 四 五 合分人 分 数 总 分 (考试时间:120分钟 满分100分) 一、单项选择题(本大题共10小题,每小题2分,共20分) 1. 计算机硬件中最核心的部件是( )。 A. 运算器 B. 主存储器 C. CPU D. 输入 / 输出设备 2. 指令指针寄存器(IP )中存放的内容( )。 A. 指令 B. 指令地址 C. 操作数 D. 操作数地址 3. 寄存器间接寻址方式中,要寻找的操作数位于( )中。 A. 通用寄存器 B. 内存单元 C. 段寄存器 D. 堆栈 4. I/O 端口的编址方式分为统一编址和( )。 A. 独立编址 B. 选择编址 C. 设置编址 D. 控制编址 5. 汇编语言程序中可执行的指令位于( )中。 A. 数据段 B. 堆栈段 C. 代码段 D. 附加数据段 6. 循环结构设计中,要考虑的核心问题是( )。 A. 循环的控制 B. 选择循环结构 C. 设置循环参数初始值 D. 修改循环控制参数 7. 在汇编中用于管理和控制计算机相关功能的指令是( )。 A. 伪指令 B. 机器指令 C. 宏指令 D. 目标指令 班级 姓名 学号 — — — — — — — — — — — — — — — — 密 — — — — — — — — — 封 — — — — — — — — — — 线 — — — — — — — — — — — — — — — —

8. 识别中断源的方法包括查询中断和()共两种类型。 A. 指令中断 B. 故障中断 C. 矢量中断 D. 实时时钟中断 9. CPU与I/O设备之间需要传输的信息通常包括()、状态信息 和控制信息。 A. 编址信息 B. 格式信息 C. 中断信息 D. 数据信息 10. 一般情况下,汇编源程序应由数据段、()和代码段共三个逻 辑段组成。 A. 逻辑段 B. 堆栈段 C. 指令段 D. 类型段 二、名词解释(本大题共5小题,每小题4分,共20分) 11. 微处理器: 12. 寻址方式: 13. 伪指令: 14. 中断源:

汇编语言程序设计

汇编语言程序设计 实验报告 实验名称上机过程及顺序结构与分支结构程序设计实验班级 学号 姓名 日期2017年10月26号 成绩 评阅人 软件学院

一、实验目的与意义 理解并熟练掌握汇编语言程序设计过程中的编辑、汇编、链接和调试等各个步骤,提高对汇编课程内容的理解和汇编语言的掌握,通过上机练习加深对课程内容的理解和掌握。通过汇编语言编制的程序上机调试、运行检验程序设计是否正确。熟悉和掌握编辑、汇编、连接和调试四个实用程序的使用方法,掌握调试程序中的几个常用命令的使用方法。熟悉其基本的指令操作,debug调试操作命令以及分支结构、顺序结构和循环结构的程序设计。 二、实验环境 操作系统:Microsoft Windows8 集成环境:Masm for Windows 上机地点:信息楼B405教室 三、实验的预习内容 预习的主要内容: 1. 使用DEBUG命令的方法; 2. 熟悉掌握从理论上定义数据的类型(即DB,DW,DD,); 3. 分支结构和顺序结构的步骤以及相关的指令; 4. 常用的标志位状态及相应的作用; 实验思路: 在对题目进行分析后,分析出解题方法,并做出与实验思路相对应的程序框图。依照程序框图的内容输入相对应的代码,最终在调试代码后,发现并解决一系列的汇编语言错误。进一步优化算法。实验之前必须了解十进制、十六进制和ASCII码之间的转换。预习查表法相关命令,掌握顺序程序的结构,从键盘输入数据的命令及显示到屏幕上的命令。 实验一: 题目1:将程序编辑、汇编、连接并通过集成环境中的debug调试,观察运行结果;用E命令修改指定地址的数据,再用G命令执行程序查看变化,用A 命令将加法指令修改成减法指令,再将其编译运行,查看寄存器值变化的异同。 题目2:分别用DB、DW和DD数据段9H,0FAH,41H,27H,编译链接之后生成exe文件,再用debug的r命令找到数据段地址,用d命令指定数据段地址,观察汇编后在机器内部对应的存储情况。 实验二: 先设置数据段地址和堆栈段地址;设置堆栈段指针;读取一个字符然后存储在AL中;用BX来存储AL中字符对应的数值;将BX中的值作为偏移地址;并在数据段中查找对应字符串;最终输出结果结束程序。 实验三: 先初始化数据段地址与堆栈段地址;设置堆栈段指针;然后将数据段中的data1放入AL中;读取数据段中的data2并判断data2是否大于0;然后读取数

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

汇编语言程序设计(钱晓捷)课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z

2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax adc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0 ;bx,cx<-- A*B+C-540 mov ax, V ;ax= D cwd ;dx,ax= D (扩展符号后为双字) sub ax, cx sbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540) idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数 2.10;(1)xchg的操作数不能是立即数 (2不能对CS直接赋值 (3)两个操作数不能都是存储单元 (4)堆栈的操作数不能是字节量 (5)adc的操作数不能是段寄存器 (6)没有确定是字节还是字操作 (7)in不支持超过FFH的直接寻址 (8)out只能以AL/AX为源操作数 第二章(02) 2.11; 指令AX的值CF OF SF ZF PF Mov ax,1407h1470h----- And ax,ax1470h00000 Or ax,ax1470h00000 Xor ax,ax000011 Not ax0ffffh----- Test ax,0f0f0h0ffffh00101 注意: 1. mov, not指令不影响标志位 2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

全国1月高等教育自学考试汇编语言程序设计试题历年试卷

做试题,没答案?上自考365,网校名师为你详细解答! 全国2005年1月高等教育自学考试 汇编语言程序设计试题 课程代码:02321 一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填 在题干的括号内。每小题1分,共16分) 1.已知某操作数的物理地址是2117AH,则它的段地址和偏移地址可能是( )。 A.2025∶0F2A B.2108∶00EA C.2000∶017A D.2100∶117A 2.某程序装入内存后,DS=1200H,CS=1400H,则程序中数据段中的数据最多是( )字节。 A.2K B.4K C.8K D.16K 3.以寄存器DI间接寻址的存储器字节单元内容加1的指令是( )。 A.INC [DI] B.INC DI C.INC BYTE PTR[DI] D.ADD [DI],1 4.有语句:COUNT EQU 256,下列四种叙述中,正确的是( )。 A.COUNT是变量 B.COUNT占用一个字节存储单元 C.COUNT是符号常数 D.COUNT占用二个字节存储单元 5.下面指令中,源操作数的寻址方式为立即寻址的是( )。 A.MOV AX,OFFSET A B.MOV AX,A C.MOV AX,A+1 D.MOV AX,A[BX] 6.已知SP=2110H,执行POP AX后,SP寄存器的值是( )。 A.2111H B.2112H C.210FH D.210EH 7.将AX中有符号数除以2的正确指令是( )。 A.SHR AX,1 B.SAR AX,1 C.ROR AX,1 D.RCR AX,1 8.比较BX和SI中的两个存储器地址,若BX≥SI转向HIGH的正确指令是( )。 A.JAE HIGH B.JBE HIGH C.JEG HIGH D.JLE HIGH 9.指令SCASB操作数的段地址一定在( )寄存器中。 A.CS B.DS C.ES D.SS 10.有数据定义语句BUF DW 0ABH,1,10 DUP(3 DUP(1,0),2)汇编后,为变量BUF分配 的存储单元字节数是( )。 A.48H B.90H C.120 D.60 11.下列指令执行后,不改变AL寄存器内容的指令是( )。 1

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

汇编语言程序设计教程(第3版 卜艳萍)参考答案

汇编语言程序设计教程(第3版) 习题参考答案 第1章汇编语言基础知识 思考与练习 1.计算机系统分哪几个层次?简述计算机系统的硬件结构。 1)数字逻辑层 2) 微体系结构层 3) 指令系统层 4) 操作系统层 5) 汇编语言层 6) 高级语言层 7) 应用层 硬件系统是指构成计算机系统的物理实体或物理装置。它由控制器、运算器、存储器、输入设备和输出设备等部件构成。 2.简述用汇编语言进行程序设计的必要性。 1)程序要具有较快的执行时间,或者只能占用较小的存储容量。例如,操作系统的核 心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。 2)程序与计算机硬件密切相关,程序要直接、有效地控制硬件。例如,I/O接口电路 的初始化程序段,外部设备的低层驱动程序等。 3)大型软件需要提高性能、优化处理的部分。例如计算机系统频繁调用的子程序、动 态连接库等。 4)没有合适的高级语言或只能采用汇编语言的时候。例如,开发最新的处理器程序时, 暂时没有支持新指令的编译程序。 5)汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解 密软件、分析和防治计算机病毒等。 3.汉字编码主要分哪几类?每类的功能如何? 汉字编码主要分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字形码。 1)为了能直接使用西文标准键盘进行输入,就必须为汉字设计相应的编码方法,即用 西文标准键盘上的字母数字串表示汉字的编码。目前,汉字输入编码方法主要有三 种:数字编码、拼音编码和字形编码。 2)汉字交换码:在不同汉字信息处理系统间进行汉字交换时所使用的编码,就是国标 码。无论采用哪种方法输入汉字,一旦输入到计算机中,必须采用统一的国标码标 识每个汉字。 3)汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息 处理系统内部存储、处理、传输汉字用的编码。 4)字形编码也称为字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。4.计算机的字长是怎么定义的,试举例说明。 计算机能同时处理二进制信息的位宽定义为计算机的字长。如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。 5.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值? 用相应进制的数值加上进制标记即可。

汇编语言程序设计试题

汇编语言程序设计试题 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.设SS=2050H,SP=0140H,则栈顶存贮单元的物理地址是( A ) A.20640H B.2063EH C.2063FH D.21900H 2.使用DOS功能调用时,子程序编号应放在( B ) A.AL B.AH C.AX D.任意指定 3.没有 ..语法错误的输出指令是( B ) P76 A.OUT AX,30H B.OUT DX,AL C.OUT AL,DX D.OUT 30H,AH 4.用MOV指令将十进制数89以非压缩BCD码格式送入AX,可使用的指令是( B ) A.MOV AX,89 B.MOV AX,0809H C.MOV AX,89H D.MOV AX,0809 5.设AX=8765H,DX=4321H,执行CWD指令后,DX中的内容是( B ) P117 A.4321H B.0FFFFH C.8000H D.0001H 6.设CL=05H,要获得CL=0AH,可选用的指令是( A) A.XOR CL,0FH B.NOT CL C.OR CL,0AH D.AND CL,0FH 7.假设执行ADD指令后AL=8CH,再执行DAA指令,AL中的值是( A ) A.92H B.0104H C.74H D.8CH 8.MOV AL,79H ADD AL,B1H 上面指令执行后,设置的标志位CF和ZF的值是( D ) A.CF=0,ZF=1 B.CF=l,ZF=1 C.CF=0,ZF=0 D.CF=1,ZF=0 9.TEST DL,55H P123 JZ NEXT NEXT:…… … 上述程序段,执行JZ指令时能产生转移的情况是( D ) A.DL>55H B.DL<55H C.DL=55H D.DL中第0、2、4、6位均为0 10.假设AL=28H, 执行ROL AL,1 指令之后的情况是( D ) P125 A.AL=14H, CF=1 B.AL=50H, CF=1 C.AL=14H, CF=0 D.AL=50H, CF=0 11. 98的BCD码是(B) A)10011001 B) 10011000 C) 10011010 D) 10001010 12. –0110110 的补码是(A) A) 11001010 B) 11001001 C) 10110110 D) 00110110

汇编语言程序设计

汇编语言程序设计 课程介绍 1.属于低级语言的程序设计 2.硬件类课程和操作系统先行课 3.软件开发的一个组成部分(加密解密、逆向工程、有害代码的分析防治) 4.高级语言程序设计的扩展(硬件资源的管理、驱动等) 5.对计算机专业:专业基础课、必修课 第一章汇编语言基础知识 §1.1计算机语言基本概念 一、机器语言:(0、1代码) 1.机器指令:是指挥计算机完成某一基本操作的命令,是由硬件电路设计决定的,也叫硬指令。由操作码和地址码组成。 2.指令系统:每台计算机所特有的、全部指令的集合构成该CPU的指令系统。 3.机器语言程序:机器指令的集合构成了机器语言,用机器语言编写的程序就是机器语言程序。 4.特点:计算机能直接识别,执行速度快,但难于记忆、识别和编写。 二、汇编语言: 1.汇编指令:用便于记忆、并能描述指令功能的符号表示的机器指令。 2.汇编程序:就是把汇编语言源程序翻译成机器语言程序的一种系统软件。 3.汇编语言:汇编指令、伪指令、宏指令和汇编程序一起组成了汇编语言。 4.特点:汇编指令与机器指令一一对应,相对机器语言易于理解、掌握。汇编语言直接面向机器,用汇编语言编制的程序简洁、快速。 三、高级语言:

1.高级语言:机器语言和汇编语言以外的程序设计语言统称高级语言。 2.特点:其特点是更加接近自然语言和惯用的数学表达形式,与计算机硬件结构无关,因而便于使用,便于交流和推广。高级语言编程效率高,但运行效率低。 3.高级语言需要使用编译程序和解释程序将源程序翻译成机器语言程序,然后交计算机执行。 §1.2数据表示与运算 一、位计数制: 1.位权表示法:每位的位权与该位的数值相乘后相加得到该数的数值。 2.十进制:逢十进一,用0、1、2、3、4、5、6、7、8、9十个数码表示。(D) 二进制:逢二进一,用0、1两个数码表示。(B) 八进制:逢八进一,用0、1、2、3、4、5、6、7八个数码表示。(Q) 十六进制:逢十六进一,用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六个数码表示。(H) 二、不同数制之间的转化: 1.非十进制数转化为十进制: 1011100.1011B=1×26+0×25+1×24+1×23+1×22+0×21+0×20+1×2-1+0×2-2+1×2-3+1×2—4=92.6875D 1001.2Q=1×83+0×82+0×81+1×80+2×8-1 A031.2H=10×163+0×162+3×161+1×160+2×16-1=41009.125D 2.十进制转化为非十进制数: 十进制数转化位二进制数: 整数部分:除2取余,倒序排列得到的整数。 2 13 (1) 2 6 0

第四章MCS-51汇编语言程序设计

第四章MCS-51汇编语言程序设计 重点及难点: 单片机汇编语言程序设计的基本概念、伪指令、单片机汇编语言程序的三种基本结构形式、常用汇编语言程序设计。 教学基本要求: 1、掌握汇编语言程序设计的基本概念; 2、掌握伪指令的格式、功能和使用方法; 3、掌握顺序结构、分支结构和循环结构程序设计的步骤和方法; 4、掌握常用汇编语言程序设计步骤和方法。 教学内容 §4.1汇编语言程序设计概述 一、汇编语言的特点 (1)助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。 (2)使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。 (3)汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。 (4)汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用;但是掌握了一种计算机系统的汇编语言后,学习其他的汇编语言就不太困难了。 二、汇编语言的语句格式 [<标号>]:<操作码> [<操作数>];[<注释>] 三、汇编语言程序设计的步骤与特点 (1)建立数学模型 (2)确定算法 (3)制定程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序 §4.2伪指令 伪指令是程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。 MCS- 51常见汇编语言程序中常用的伪指令:

第四章MCS-51汇编语言程序设计91 1.ORG (ORiGin)汇编起始地址命令 [<标号:>] ORG <地址> 2.END (END of assembly)汇编终止命令 [<标号:>] END [<表达式>] 3.EQU (EQUate)赋值命令 <字符名称> EQU <赋值项> 4.DB (Define Byte)定义字节命令 [<标号:>] DB <8位数表> 5.DW (Define Word)定义数据字命令 [<标号:>] DW <16位数表> 6.DS (Define Stonage )定义存储区命令 [<标号:>] DW <16位数表> 7.BIT位定义命令 <字符名称> BIT <位地址> 8.DA TA数据地址赋值命令 <字符名称> DATA <表达式> §4.3单片机汇编语言程序的基本结构形式 一、顺序程序 [例4-1]三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、5414和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 MOV R0 ,# 52H ;被加数的低字节地址 MOV R1 ,# 55H ;加数的低字节地址 MOV A ,@ R0 ADD A ,@ R1 ;低字节相加 MOV @ R0 , A ;存低字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;中间字节带进位相加 MOV @ R0 , A ;存中间字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;高字节带进位相加 MOV @ R0 , A ;存高字节相加结果 CLR A

相关文档
最新文档