资源描述
第1章 习题答案
1.答:
为了区别所使用数制,普通用如下两种书写格式表达:
① 用括号将数字括起,背面加数制区别,数制用下标形式给出;
② 用后缀区别,二进制数、十进制数、八进制数、十六进制数后缀分别为字母B(或b)、D(或d)、O(或o)或Q(或q)、H(或h)。
例如:十六进制数56.78可以表达到(56.78)16或56.78H;
十进制数56.78可以表达到(56.78)10或56.78D。
2.答:
123D采用十进制,0AFH采用十六进制,77Q采用八进制,1001110B采用二进制。
3.答:
字长为8位二进制数原码表达最大值:127,最小值:-127;补码表达最大值:127,最小值:-128。
字长为16位二进制数原码表达最大值:32767,最小值:-32767;补码表达最大值:32767,最小值:-32768。
4.答:
(1)125D=0111 1101B=7DH
(2) 255D=1111 1111B=FFH
(3)72D=0100 1000B=48H
(4)5090D=0001 0011 1110 0010B=13E2H
5.答:
(1)1111 0000B=240D=F0H
(2) 1000 0000 B =128D =80H
(3)1111 1111 B =255 D =FFH
(4)0101 0101B=85D=55H
6.答:
(1)FFH=255D=1111 1111B
(2) ABCDH=43947D=1010 1011 1100 1101B
(3) 123H=291D=0000 0001 0010 0011B
(4) FFFFH=65535D=1111 1111 1111 1111B
7.答:
(1)8位时(16)原=0001 0000 ; (16)补=0001 0000;
16位时(16)原=0000 0000 0001 0000 ; (16)补=0000 0000 0001 0000;
(2) 8位时(-16)原=1001 0000 ; (-16)补=1111 0000;
16位时(-16)原=1000 0000 0001 0000 ; (-16)补=1111 1111 1111 0000;
(3) 8位时(+0)原=0000 0000; (+0)补=0000 0000;
16位时(+0)原=0000 0000 0000 0000; (+0)补=0000 0000 0000 0000;
(4) 8位时(-0)原=1000 0000 ; (-0)补=0000 0000;
16位时(-0)原=1000 0000 0000 0000; (-0)补=0000 0000 0000 0000;
(5) 8位时(127)原=0111 1111; (127)补=0111 1111;
16位时(127)原=0000 0000 0111 1111; (127)补=0000 0000 0111 1111;
(6) 8位时-128超过原码表达范畴; (-128)补=1000 0000;
16位时(-128)原=1000 0000 1000 0000; (-128)补=1111 1111 1000 0000;
(7) 8位时(121)原=0111 1001 ; (121)补=0111 1001;
16位时(121)原=0000 0000 0111 1001; (121)补=0000 0000 0111 1001;
(8) 8位时(-9)原=1000 1001 ; (-9)补=1111 0111;
16位时(-9)原=1000 0000 0000 1001; (-9)补=1111 1111 1111 0111;
8.答:
(1) [x]补=1100 0010;(2)[-x]补=0000 1101;(3)[x]原=1100 0010;(4)[x]反=1011 1101。
9.答:
(1)A>B;(2)A<B
10.答:
(1)溢出;(2)13H;(3)溢出;(4)EDH;(5)EDH。
11.答:
(1)1000 1000;(2)1110 1110;(3)0110 0110;(4)1010 1100;
(5)0000 0000;(6)1010 1100;(7)=0101 0011。
12.答:
(1)30H=48,字符为‘0’;(2)39H=57,字符为‘9’;(3)42H=66,字符为‘B’;
(4)62H=98,字符为‘b’;(5)20H=32,字符为空格;(6)7H=7,字符为报警符;
13、答:
十进制
49
123
7
62
压缩BCD码
0100 1001B
0001 0010 0011B
0000 0111B
0110 0010B
非压缩BCD码
0000 0100 0000 1001B
0000 0001 0000 0010 0000 0011B
0000 0111B
0000 0110 0000 0010B
ASCII码
3439H
313233H
37H
3632H
第2章 习题答案
1.(1)答:
物理地址:物理地址(PA)是20位无符号二进制数,是CPU访问存储器实际地址。每个存储单元相应一种物理地址。8086存储空间物理地址范畴是:00000H~FFFFFH。
逻辑地址:采用分段构造存储器中,把通过段地址和偏移地址来表达存储单元地址称为逻辑地址,记为:段地址:偏移地址。
段地址:8086规定各逻辑段从节整数边界开始,即段首地址二进制值低4位是0000,把段首地址高16位称为段基址或段地址。
偏移地址:把某一存储单元相对于段地址段内偏移量称为偏移地址(也称有效地址EA)。段地址和偏移地址都是是16位无符号二进制数。
(2)答:
时钟周期:计算机“时钟”是由振荡源产生、幅度和周期不变节拍脉冲,每个脉冲周期称为时钟周期,又称为T状态或T周期,时钟周期是微机系统工作最小时间单元。
总线周期:当CPU访问存储器或输入/输出端口时,需要通过总线进行读或写操作,这个过程称为总线周期(Bus Cycle)。总线周期是运用总线完毕一次读/写所需要时间。
指令周期:执行一条指令所需要时间称为指令周期(Instruction Cycle)。指令周期由1个或各种总线周期构成。
(3)答:
最小模式:也称为单解决器模式,是指系统中只有一片8086微解决器,所连接存储器容量不大、片子不多,所要连接I/O端口也不多,系统控制总线就直接由CPU控制线供应,从而使得系统中总线控制电路减到至少。最小模式合用于较小规模系统。
最大模式:相对于最小模式而言,合用于中、大型规模系统。系统中有各种微解决器,其中一种是主解决器8086,其她解决器称为协解决器,承担某方面专门工作。需要增长一片8288来对8086CPU发出控制信号进行变换和组合,以得到对存储器或I/O端口读/写信号和对锁存器、总线收发器控制信号。
2.答:
EU:负责指令执行,即从总线接口部件BIU指令队列取指令,指令执行后向BIU送回运算成果,同步把运算成果状态特性保存到标志寄存器中。
BIU:负责CPU与存储器、I/O设备之间数据传送。BIU完毕如下操作:取指令送给指令队列、配合执行部件从指定内存单元或者外设端口中取数据、将数据传送给执行部件或者把执行部件操作成果传送到指定内存单元或外设端口中。
8086BIU和EU在诸多时候可以并行工作,使得取指令、指令译码和执行指令这些操作构成操作流水线。
① 当指令队列中有两个空字节,且EU没有访问存储器和I/O接口规定期,BIU会自动把指令取到指令队列中。
② 当EU准备执行一条指令时,它会从指令队列前部取出指令执行。在执行指令过程中,如果需要访问存储器或者I/O设备,那么EU会向BIU发出访问总线祈求,以完毕访问存储器或者I/O接口操作。如果此时BIU正好处在空闲状态,那么,会及时响应EU总线祈求;但如果BIU正在将某个指令字节取到指令队列中,那么,BIU将一方面完毕这个取指令操作,然后再去响应EU发出访问总线祈求。
③ 当指令队列已满,并且EU又没有总线访问时,BIU便进入空闲状态。
④ 在执行转移指令、调用指令和返回指令时,下面要执行指令就不是在程序中紧接着那条指令了,而BIU往指令队列装入指令时,总是按顺序进行。在这种状况下,指令队列中已经装入指令就没有用了,会被自动消除。随后,BIU会往指令队列中装入另一种程序段中指令。
3.答:
地址信号是CPU发送给内存或I/O设备,因此地址线是单向;
数据信号可以从CPU发送给内存或I/O设备,也可以从内存或I/O设备发送给CPU,故而数据线是双向。
4.答:
8086CPU中有14个寄存器。它们是:4个16位通用寄存器:AX、BX、CX、DX和8个8位通用寄存器:AH、AL、BH、BL、CH、CL、DH、DL;指针和变址寄存器SP、BP、SI、DI;4个16位段寄存器CS、DS、SS和ES;标志寄存器FR;指令指针寄存器IP。
功能略。
5.答:
(1)加法运算成果为:CEACH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=1;
(2)加法运算成果为:68ACH;CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0;
(3)加法运算成果为:DDDDH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=0。
6.答:
8086CPU可寻址存储器地址范畴是00000H~FFFFFH;
可寻址I/O端口地址范畴是0000H~FFFFH。
7.答:
由于8086CPU提供20位地址,但8086中可用来存储地址寄存器,如IP、SP、BX、SI等都是16位,只能直接寻址64KB。为了寻址1MB存储空间,8086CPU采用了典型存储器分段技术,即将整个存储器空间分为许多逻辑段,每个逻辑段容量不大于或等于64KB。分段后,对存储器寻址操作不再直接用20位物理地址,而是采用段地址加段内偏移地址二级寻址方式。
8.答:
将AH内容送存储单元操作过程中:;
将I/O端口内容送AL操作过程中:。
9.答:
A0
有效数据引脚
操 作
0 0
AD15~AD0(一种总线周期同步访问奇体和偶体,从奇地址单元读/写字数据高8位,从偶地址单元读/写字数据低8位)
从偶地址读/写一种字
1 0
AD7~AD0
从偶地址读/写一种字节
0 1
AD15~AD8
从奇地址读/写一种字节
0 1
1 0
AD15~AD8(第一种总线周期从奇字数据低8位)
AD7~AD0(第二个总线周期从偶地址单元读/写字数据高8位)
从奇地址读/写一种字
10.答:
8086系统复位后,指令指针(IP)为0000H;CS寄存器为FFFFH,其她寄存器为0000H;指令队列清空。
11.答:
8086A19/S6~A16/S3和AD15~AD0是复用信号,需要地址锁存器将地址信息保存起来,为外接存储器或外设提供地址信息。
需要锁存信号是:地址信号及信号。
12.答:
8086CPU一种基本总线周期包括4个时钟周期:T1、T2、T3和T4 。
在T1状态,有效,批示CPU访问是存储器还是外设,之后CPU往多路复用总线上发出地址信息,以指出要寻址存储单元或外设端口地址。在T1状态,CPU还必要在ALE引脚上输出一种正脉冲作为地址锁存信号。信号也在T1状态送出,它用来表达数据传送字宽。
在T2状态,CPU从总线上撤销地址,使总线低16位浮空,置成高阻状态,为传播数据作准备。总线最高4位(A19~A16)用来输出本总线周期状态信息。读信号或写信号在T2状态变为有效,批示CPU将进行哪种操作(读或写)。
在T3状态,多路总线高4位继续提供状态信息,而多路总线低16位上浮现由CPU读出数据或者CPU从存储器或端口写入数据。
在T4状态和前一种状态交界处,CPU对数据总线进行采样,获得数据,总线周期结束。
13.答:
在有些状况下,外设或存储器速度较慢,不能及时地配合CPU传送数据。这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一种“数据未准备好”信号,于是CPU会在T3之后插入1个或各种附加时钟周期TW。取决与外设或存储器速度。
14.答:
两种操作时序不同之处发生在T1和T2状态。
① 在T1状态,读周期:应输出低电平;写周期:应输出高电平。
② 在T2状态,读周期:有效,而无效,AD15~AD0为高阻态;写周期:变为无效,而写信号变为有效,AD15~AD0在地址撤销之后及时送出要写入存储器或外设端口数据。
15.答:
在最小模式下,读信号、ALE和、等信号直接由CPU给出;
在最大模式下,总线控制器8288依照和状态信号产生读信号和,ALE和、DEN也是由8288发出,并且DEN信号极性与CPU在最小模式下发出信号正好相反。
第3章 习题答案
1.答:
指令中关于如何求出操作数有效地址办法称为寻址方式。
8086CPU支持各种寻址方式,依照操作数类型及来源大体分为3类:数据寻址、转移地址寻址和I/O寻址。
2.答:
8086汇编指令可以采用7种基本数据寻址方式:①及时寻址;②寄存器寻址;③直接寻址;④寄存器间接寻址;⑤寄存器相对寻址;⑥基址变址寻址;⑦相对基址变址寻址。
与存储器寻址方式(后5种)相比,寄存器寻址方式最快。
3.答:
如果指令中没有用前缀阐明操作数存储在哪个段,则操作数默认存储在数据段。
8086系统容许操作数存储在代码段、堆栈段或附加段。此时,就需要在指令中运用前缀指明段超越。例如:
MOV ES:[1225H],AX
4.答:
(1)寄存器寻址方式
(2)寄存器间接寻址方式,PA=10300H
(3)寄存器间接寻址方式,PA=0H
(4)直接寻址方式,PA=10060H
(5)基址变址寻址方式,PA=10500H
(6)相对基址变址寻址方式,PA=12300H
(7)直接寻址方式,PA=11000H
(8)寄存器相对寻址方式,PA=10306H
(9)直接寻址方式,PA=10065H
5.答:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
×
×
×
√
×
√
×
×
√
×
×
6.答:
(1)源操作数寻址方式不同。MOV AX,3000H指令源操作数采用是及时数寻址方式,MOV AX,[3000H]指令源操作数采用是直接寻址方式。
(2)指令执行后,AX值不同。MOV AX,MEM指令执行后,AX得到是MEM单元内容,而MOV AX,OFFSET MEM指令执行后,AX得到是MEM单元地址。
(3)指令不同。MOV AX,MEMMOV AX,MEM指令执行后,AX得到是MEM单元内容,而LEA AX,MEM指令执行后,AX得到是MEM单元地址。
(4)转移类型不同。JMP SHORT L1指令实现是段内转移,而JMP NEAR PTR L1指令实现是段间转移。
(5)指令执行成果不同。CMP DX,CX指令执行后,DX值不变,而SUB DX,CX指令执行后,DX值是两寄存器值差。
(6)操作数所在段不同。MOV [BP][SI],CL指令访问是堆栈段存储单元,而MOV DS:[BP][SI],CL指令访问是数据段存储单元。
7.答:
(1)MOV BYTE PTR [BP],200指令执行后,(58200H)=200H
(2)MOV WORD PTR [BX],指令执行后,(22400H)=H
8.答:
当前栈顶地址是:FE00H:H;
执行PUSH BX指令后,栈顶地址变为:FE00H:200EH,栈顶2字节内容是:3457H。
9.答:
(1)(DX)=3C62H,CF=1
(2)(DX)=03C6H,CF=0
(3)(DX)=18A0H,CF=1
(4)(DX)=2BC6H,CF=0
(5)(DX)=18B7H,CF=1
(6)(DX)=BCC5H,CF=0
10.答:
(AX)
CF
ZF
OF
SF
PF
(1)
134EH
0
0
0
0
1
(2)
0821H
0
0
0
0
1
(3)
F142H
1
0
0
1
1
(4)
0A69
1
0
0
1
1
(5)
F596
-
-
-
-
-
(6)
0A69
0
0
0
0
1
11.答:
(1) CMP CX,DX
JA NEXT
(2)CMP AX,BX
JNA NEXT
(3)CMP DX,0
JZ NEXT
(4)CMP CX,DX
JBE NEXT
12.答:
(1) 程序转向L1。
(2) 程序转向L1。
(3) 程序转向L2。
(4) 程序转向L5。
(5) 程序转向L5。
13.答:
由于普通运算指令执行是二进制数运算,而BCD码是十进制数,因此,需要对运算成果进行十进制调节。
在做BCD码加、减和乘法运算时,十进制调节指令放在运算指令之后;而作BCD码除法运算时,在运算指令之前用十进制调节指令对被除数进行调节。
14.答:
MOV Cl,3
SHR bx,cl
15.答:(略)
16.答:
DATA SEGMENT
COUNT=100H
ORG 1000H
D_DATA DB COUNT DUP(?)
ORG 2170H
S_DATA DB COUNT/5 DUP(1,2,3,4,5)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,S_DATA
LEA DI,D_DATA
MOV CX,COUNT
REP MOVSB
MOV AL,1
MOV CX,COUNT
LEA DI,D_DATA
AGAIN:
CMP BYTE PTR [DI],AL
JNZ NEXT
MOV BYTE PTR [DI],' '
NEXT:
INC DI
LOOP AGAIN
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
17.答:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AX,5678H
MOV DX,1234H
NOT AX
NOT DX
ADD AX,1
ADC DX,0
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
18. 答:
;本程序未考虑溢出状况。
DATA SEGMENT
A1 DW 5050H
A2 DW ? ;存A1反码
A3 DW ? ;存A1补码
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,A1
NOT AX
MOV A2,AX
INC AX
MOV A3,AX
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
19. 答:
DATA SEGMENT ;AT 5000H
ORG 3481H
DAT DB 12H
DB ?,?,?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,DAT
NEG AL
MOV DAT+1,AL
MOV AL,DAT
XOR AL,00001111B
MOV DAT+2,AL
MOV AL,DAT
OR AL,11110000B
MOV DAT+3,AL
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
20. 答:
COUNT=1000
DATA SEGMENT
ORG 1000H
DAT DB 10 DUP (12H,-5,-3,0,-128,56H,98H,4,128,200)
ORG H
MINDAT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,DAT
MOV CX,COUNT
DEC CX
MOV AL,[SI]
NEXT: INC SI
CMP AL,[SI]
JLE ISMIN
MOV AL,[SI]
ISMIN:
LOOP NEXT
MOV MINDAT,AL
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
21. 答:
DATA SEGMENT
STRING1 DB 'hELLO!'
COUNT1=$-STRING1
STRING2 DB 'hEL1O!'
COUNT2=$-STRING2
IM DB 'MATCH$'
NM DB 'NOT MATCH$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,STRING1
LEA DI,STRING2
MOV CX,COUNT1
MOV BX,COUNT2
CMP CX,BX
JNZ DISPNOTMATCH
NEXT:
MOV AL,[SI]
MOV AH,[DI]
CMP AL,AH
JNZ DISPNOTMATCH
INC SI
INC DI
LOOP NEXT
ISMATCH:
MOV DX,OFFSET IM
MOV AH,9
INT 21H
JMP EXIT
DISPNOTMATCH:
MOV DX,OFFSET NM
MOV AH,9
INT 21H
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
22. 答:
DSEG SEGMENT
DATA DB 5,6,7,8
DW ?
DATA2 DB 1,10,100,20
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV DX,0
MOV CX,4
LEA SI,DATA
LEA DI,DATA2
NEXT:
MOV AL,[DI]
MOV BL,[SI]
CALL DOMUL
ADD DX,AX
INC DI
INC SI
LOOP NEXT
MOV WORD PTR DATA+4,DX
EXIT:
MOV AH,4CH
INT 21H
DOMUL PROC
MUL BL
RET
DOMUL ENDP
CODE ENDS
END START
MOV CX,100
MOV AX,SEG LIST
MOV DS,AX
MOV AX,SEG BLK
MOV ES,AX
LEA SI,LIST
ADD SI,CX
LEA DI,BLK
ADD DI,CX
STD
REP MOVSB
23. 答:
24. 答:
DSEG SEGMENT
BUFFER DW 8
DB '12345678'
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV CX,BUFFER
SAR CX,1
LEA SI,BUFFER
MOV DI,SI
ADD DI,2
AGAIN:
ADD SI,2
MOV AL,[SI]
AND AL,0FH
SAL BYTE PTR [SI+1],1
SAL BYTE PTR [SI+1],1
SAL BYTE PTR [SI+1],1
SAL BYTE PTR [SI+1],1
OR AL,BYTE PTR [SI+1]
MOV [DI],AL
INC DI
LOOP AGAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
25. 答:
JMP SHORT LAB指令是一条双字节指令。这条指令取出后,(IP)=0102H,转移目的偏移地址=(IP)+位移量。因此,转移目的物理地址=(CS)╳16+(IP)+位移量。
(1)转移目的物理地址=(CS)╳16+0158H
(2)转移目的物理地址=(CS)╳16+0182H
(3)转移目的物理地址=(CS)╳16+017AH
(4)转移目的物理地址=(CS)╳16+01E2H
DSEG SEGMENT
ORG 10H
DAT DB 10
DB ?
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AL,DAT
MOV BL,AL
SAL BL,1
ADD AL,BL
MOV CL,2
SAL BL,CL
ADD AL,BL
MOV DAT+1,AL
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
26. 答:
27. 答:
DSEG SEGMENT
ORG 10H
DAT DB 10H,20H
DB ?,?
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AL,DAT
MOV AH,DAT+1
MOV CL,3
SAR AX,CL
MOV DAT+2,AL
MOV DAT+3,AH
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
28. 答:
DSEG SEGMENT
BLOCK DW 8 DUP (10H,20H,-3,-9)
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA SI,BLOCK
MOV CX,32
AGAIN:
MOV AX,[SI]
CMP AX,0
JNS NEXT
NEG AX
MOV [SI],AX
NEXT:
INC SI
INC SI
LOOP AGAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
29. 答:
DSEG SEGMENT
ORG 3030H
DAT DW 1234H,-1234H,?,?
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AX,DAT
MOV BX,DAT+2
IMUL BX
MOV DAT+4,AX
MOV DAT+6,DX
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
第4章 习题答案
1. 答:
标号是指令符号地址,可用作控制转移指令操作数。
标号具备3种属性:段属性、偏移属性和类型属性。
2. 答:
变量是存储单元符号地址。
变量具备3种属性:段属性、偏移属性和类型属性。
3. 答:
伪指令语句,也称批示性语句,是不可执行语句,汇编后不产生目的代码,它仅仅在汇编过程中告诉汇编程序如何汇编源程序。
宏是一种以宏名定义指令序列。一旦把某程序段定义成宏,则可以用宏名代替那段程序。在汇编时,要对宏进行宏展开,即把以宏名表达地方替代为该宏相应指令序列目的代码。宏指令可以当作指令语句扩展,相称于多条指令语句集合。
4. 答:
汇编语言表达式中有如下运算符:算术操作符、逻辑操作符、移位操作符、关系操作符、数值回送操作符和属性操作符。
操作符所完毕运算在汇编阶段进行。
5. 答:
略。
6. 答:
(1)DB1 DB 10H DUP(1,2,5 DUP(3),4)
(2)DB2 DB 'STUDENT'
(3)BD3 DW 12H,0ABCDH
(4)COUNT EQU DB2-DB1
7. 答:
第一种OR表达该指令是OR指令,在程序运营时,该OR操作被执行。
第二个OR是逻辑操作符OR,在汇编时,OR运算被执行。
8. 答:
(1)(AX)=1
(2)(AX)=2
(3)(CX)=5
(4)(DX)=0AH
(5)(CX)=1
(6)(DX)=4
9. 答:略。
10. 答:
DSEG SEGMENT
STRING DB 'NEXT123DF$'
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA SI,STRING
MOV CX,0
AGAIN:
MOV AL,[SI]
CMP AL,'$'
JZ NEXT
INC CX
INC SI
JMP AGAIN
NEXT:
MOV DX,CX
MVDAT:
MOV [SI]+2,AL
DEC SI
MOV AL,[SI]
LOOP MVDAT
MOV [SI]+2,AL
MOV WORD PTR [SI],DX
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
11. 答:
DSEG SEGMENT
STRING DB 'It is FEB&03'
COUNT=$-STRING
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA SI,STRING
MOV CX,COUNT
AGAIN:
MOV AL,[SI]
CMP AL,'&'
JNZ NEXT
MOV AL,' '
MOV [SI],AL
NEXT:
INC SI
LOOP AGAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
12. 答:
DSEG SEGMENT
BLOCK DB 4,5,-2,7,8,9,2,1,0AH,1BH,87H,23H,44H,33H,45H,28H,0DH,8EH,66H,22H
COUNT=$-BLOCK
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA SI,BLOCK
MOV CX,COUNT
AGAIN:
MOV AL,[SI]
MOV DI,SI
MOV DX,CX
NEXT1:
CMP AL,[DI]
JGE NEXT
XCHG AL,[DI]
NEXT:
INC DI
DEC DX
JNZ NEXT1
MOV [SI],AL
INC SI
LOOP AGAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
13. 答:
(3)
(4)(2) (5)(1)
(6)
1B50H
1000H
1A70H
150BH
上表左侧序号,表达相应操作完毕后SP指向栈顶位置。
14. 答:
SUB1 PROC
MOV BX,AX
MOV CL,4
ROL BX,CL
MOV AX,BX
AND AX,000FH
MOV CX,1000
MUL CX ;千位在DX,AX,有效值在AX中
PUSH AX
MOV CL,4
ROL BX,CL
展开阅读全文