资源描述
现代微机复习试题答案
精品资料
第一章
1、在8086变址寻址方式中,操作数的物理地址等于( )
A.段寄存器左移四位加上变址寄存器的内容
B.段寄存器左移四位加上变址寄存器的内容再加上给定的偏移量
C.段寄存器左移四位加上变址寄存器的内容再加上基址寄存器的内容
D.段寄存器左移四位加上基址寄存器的内容再加上给定的偏移量
2、段地址为3900H,偏移地址为5200H,则物理地址为( )
A.8B00H B.3E200H C.44200H D.55900H
3、8086能寻址内存储器的最大地址范围为( )
A.64KB B.1MB C.16MB D.16KB
4、取指令的物理地址=( )
A.(DS)´10H+偏移地址 B.(ES)´10H+偏移地址
C.(SS)´10H+(SP) D.(CS)´10H+(IP)
表1-2 和AD0编码的含义
5、8086CPU的控制线 =0,地址线A0=0,CPU( )
A.从偶地址开始完成8位数据传送
B.从偶地址开始完成16位数据传送
C.从奇地址开始完成8位数据传送
D.从奇地址开始完成16位数据传送
6、8086CPU在执行MOV AL,[BX]指令的总线周期内,若BX存放的内容为2034H, 和A0的状态为( )
A.0,1 B.0,0 C.1,1 D.1,0
7、8086工作在最小模式下,当M/IO#=0,RD#=0,WR#=1时,CPU完成的操作是( )
A.存储器读 B.I/O读 C.存储器写 D.I/O写
8、8086CPU有最小和最大两种工作模式,最大模式的特点是( )
A.需要总线控制器8288 B.由编程进行模式设定
C.不需要8286收发器 D.CPU提供全部的控制信号
9、CPU与外设之间交换信息,一般有( )
A.地址信息 B.数据信息 C.控制信息 D.状态信息 E.中断类型码
10、8086/8088CPU工作在最小方式对存储器进行写操作有关的控制信号( )
A.M/IO# B.WR# C.ALE D.INTA# E.DT/R#
11、如果8088/8086CPU的工作时钟CLK=4MHZ,请问:
a、CPU正常工作时,Reset引脚至少出现多少微秒的高电平才能使CPU复位?
b、在插入一个Tw的情况下,从内存读出一个字节数据需要的时间是多少?
答:(1)由于时钟为4MHZ,一个时钟周期为1/4=0.25微秒;CPU完成复位操作需要4个时钟周期,所以4*0.25=1微秒。
(2)再加上1个TW情况下,共需要5个时钟周期,所以5*0.25=1.25微秒。
12、当总线请求部件收到(①)信号后,就获得了总线控制权;在其控制总线时期,HOLD和HLDA都保持( ② )。当总线部件用完总线后,HOLD变为低电平,于是CPU又重新控制总线,并使HALD变为( ③ )
① A.HOLD B.HALD C.INTR D.INTA
② A.低电平 B.高电平 C.高阻态 D.不变
③ A.低电平 B.高电平 C.高阻态 D.不变
13、8086CPU上电复位后,CS=( FFFFH ),IP=(0000H ),DS=( 0000H ),SP=( 0000H )
14、8086CPU之所以能有力地提高工作效率,其原因之一是总线接口部件和执行部件采用( 并行 )的工作方式。
15、完成一个基本操作所用时间的最小单位是( 时钟周期 ),通常称它为一个( T )状态。完成一次读或写至少需要( 4 )个这样的状态。
16、设DS:75存储单元开始存放11H、22H、33H,若要求占用的总线周期最少,则要( 2 )条指令才能将这3个数据读入到CPU中,这时占用( 2 )个总线周期。若执行MOV AX,[75]后,则AH=( 22H ),AL=( 11H )
第二章
1 .构成4KB的存储系统,需要( )
A.1024×4位的芯片8片 B.2K×1位的芯片8片
C.1024×8位的芯片2片 D.16K×1位的芯片4片
2. 设存储器的地址线为20条,存储单元为字节,使用全译码方式组成存储器,该系统构成最大容量需要64K×1位的存储器芯片的数量是( )
A.16 B.32 C.64 D.128
3. 已知一个SRAM芯片的容量力8K×8,该芯片有一个片选信号引脚和一个读/写控制引脚,问该芯片至少有多少个引脚?地址线多少条?数据线多少条?还有什么信号线?
答: 根据存储芯片地址线数量计算公式,k=log2(1024*8)= log2(213)=13,即总计有13根地址线。另有8根数据线、2根电源线。所以该芯片至少有25(=13+8+1+1+2)根引脚。
3. 巳知一个DRAM芯片外部引脚信号中有4条数据线,7条地址线,计算它的容量。
答:根据存储容量计算公式S=2k×I,可得该芯片的存储容量为:214*4=16K×4bit(位),也可表示为64Kb=8KB(字节)
5.组成8K字节的存储器,需要256×4位的存储器芯片( )。
A.32片 B.64片 C.16片 D.50片
6. 74LS138译码器的接线如图2-28所示,写出Y0、Y2、Y4、Y6所决定的内存地址范围。
答:从图看出,该存储系统的片内地址线有13根(A12-A0),是一个由8KB存储芯片组成的存储系统,A17地址线不确定。它的地址分布为: 00?0, CBA?, ????, ????, ???? 其中,CBA作为译码输入,与输出选择有关;“?”表示可以为“0”,也可以为“1”。 于是:
0Y对应的内存地址范围是: 00000H—01FFFH;或20000H—21FFFH。 2Y对应的内存地址范围是: 04000H—05FFFH;或24000H—25FFFH。 4Y对应的内存地址范围是: 08000H—09FFFH;或28000H—29FFFH。 6Y对应的内存地址范围是: 0C000H—0DFFFH;或2C000H—2DFFFH
7. 断电后所存储信息会丢失的存储器是( )
A.ROM B.RAM C.CD-ROM D.FLASH-MEMORY
8. 需要定期刷新的存储器类型为( )
A.静态存储器 B.动态存储器 C.只读存储器 D.易失性存储器
9. EPROM是指( )
A.只读存储器 B.可编程的只读存储器
C.可擦除可编程的只读存储器 D.电可改写只读存储器
10.某一SRAM芯片其容量为2KB,除电源和接地线之外,该芯片引线的最小数目是( )
A.24 B.26 C.20 D.22
11. 有一个存储体,其地址线15条,数据线为8条,则
1)该存储体能够存储多少个汉字?
2)如果该存储体由2K×4位的芯片组成,需要多少片?
3)采用什么方法扩展?分析各位地址线的使用。
答:1)该存储体容量为215×8=32KB,存储一个汉字需要两个字节,因此,它能够存储16384(16K)个汉字。
2)需要2K×4位的芯片32片,[(32K×8)/(2K×4)=32]。
3)可采用字位全扩展方法,由2片4位的芯片组成1组8位的存储单元,16组扩展成32K的8位存储体。芯片直接使用的地址线(片内地址)11根(A0~A10),另外需要4根高位地址,连接到4-16译码输入端,产生16个译码信号用作16个芯片的片选信号。剩余的地址线用来确定该存储体的首地址。
12. 利用全地址译码将6264芯片接到8088系统总线上,地址范围为30000H~31FFFH,画出逻辑图。
答:全地址译码可以保证存储器芯片上的每一个单元在整个内存空间中具有唯一的、独占的一个地址。6264芯片有13根地址线,剩余的高位7根地址线通过译码组合确定该芯片的起始地址(30000H)。
仅供学习与交流,如有侵权请联系网站删除 谢谢67
由30000H地址得出对应的地址线状态为:
0011 000 0 0000 0000 0000
可以看出A13~A19地址线为0011 000,所以译码组合应逻辑为:
= ···A16·A17·· =(····)·(A16·A17)
= A13+A14+A15+A18+A19+ A16·A17
13. 若用2164芯片构成容量为128KB的存储器,需多少片2164? 至少需多少根地址线? 其中多少根用于片内寻址? 多少根用于片选译码?
答:2164A是容量为64K×1位的地图随机存储器芯片,构成128KB的存储器需要2164芯片16片[128K×8/(64K×1)=16]。由于地址空间为128K,需要的地址线总线为17根(217=28根)。其中,片内地址线16根(216=64K),片选地址线1根(17—16=1)。每8个2164芯片构成一组,进行位扩展,得到64KB存储器。两个这样的“组”进行地址扩展,构成128KB的存储器。
14. 某8088系统用2764ROM芯片和6264SRAM芯片构成16KB的内存。其中,RAM的地址范围为FC000H-FDFFFH,ROM的地址范围为FE000H-FFFFFH。试利用74LS138译码,画出存储器与CPU的连接图,并标出总线信号名称。
答:2764和6264均为8KB的存储芯片,需要13根地址线(A0~A12)用于片内寻址。8080系统的其他地址线(A13~A19)用于产生片选信号。
FC000H的地址线状态为: 1111 110 0 0000 0000 0000
FE000H的地址线状态为: 1111 111 0 0000 0000 0000
将A13~A15用作译码输入,其他地址(A16~A19=1111)用作译码控制,可以得到如下译码控制电路,连接如下图所示:
15. 存储周期指的是( )。
A.存储器进行连续读或写操作所允许的最短时间间隔 B.存储器的读出周期
C.存储器进行连续写操作所允许的最短时间间隔 D.存储器的写入周期
16.某一EPROM芯片,其容量为32K×8,除电源和地线外,最小的输入引脚和输出引脚分别为( )。
A. 15和8; B.32和8; C.17和8; D.18和10;
17.掩膜ROM在制造时通过光刻是否连接MOS管来确定0和1,如果对应的某存储单元位没有连接MOS管,则该位信息为( )。
A.不确定; B. 0; C.1; D.可能为0,也可能为1
18. SRAM和DRAM存储原理不同,它们分别靠( )来存储0和1的。
A.双稳态触发器的两个稳态和极间是否有足够的电荷
B.内部熔丝是否断开和双稳态触发器
C.极间电荷和浮置栅是否积累足够的电荷
D.极间是否有足够的电荷和双稳态触发器的两个稳态
第三章
3.1 如果用24b储存一个无符号数,这个数的范围是什么?如果储存的是一个补码表示的有符号数,那么这个数的范围又是什么?
答:如果用24b储存一个无符号数,这个数的范围应为:0~2-1
如果用24b储存一个补码表示的有符号数,这个数的范围应为:-2~2-1
3.2 用符号“>”把下面的数按从大到小的顺序“连接”起来
[X1]补=10110111 [X2]原=10110111 [X3]反=1011011 [X4]补=10110110 [X5]无符号数=10110111
解:X1=-0100 1001B, X2=-011 0111B, X3=-0100 1000B, X4=-0100 1010B, X5=+1011 0111B
因此:X5>X2>X3>X1>X4
3.3 用8位补码完成下列运算,用十进制“真值”的格式给出运算结果,并指出运算后CF、OF、ZF、SF、PF标志位的状态。
(1)127+126 (2)126-127 (3)-100-120 (4)-100-(-120)
解:(1) [127]=0111 1111,[126]=0111 1110,
[127+126]=1111 1101,[127+126]=-0000 0011(溢出)COZSP=01010
(2) [126]= 0111 1110,[-127]=1000 0001,
[126-127]=1111 1111,[126-127]=-000 0001,COZSP=10011
(3)- [-100]=1001 1100,[-120]=1000 1000,
[-100-120]=0010 0100,[-100-120]=+0010 0100(溢出),COZSP=01001
(4) [-100]=1001 1100,[-120]=1000 1000,[-100-(-120)]=0001 0100,[-100-(-120)]=+0001 0100,COZSP=00001
3.4 把二进制代码1001011101011000分别“看作”是:
(1)二进制无符号数 (2)二进制补码 (3)压缩BCD码
(4)非压缩BCD码
哪一种情况下它代表的“值”最大?
答:看做二进制无符号数时,它代表的“值”最大。
分析:看作二进制补码时,它代表一个负数,而其他的情况下,它均正数。因此,看作二进制补码时,它代表的值最小。
把这组代码用十六进制数字形式写出:9758
对于无符号数,它的值等于十六进制的9758H;
对于压缩BCD码,它的值等于十六进制的9758,显然小于9758H;
对于非压缩BCD码,它的值等于十进制的78,显然更小于9758H;
因此,看作二进制无符号数时,它代表的“值”最大。
1EH
30H
41H
42H
43H
0FFH
00H
0CAH
0020H
X
3.5 某数据段内有如下数据定义:
X db 30, 30H, ‘ABC’, 2-3, ?, 11001010B
dw 0FFH,-2, “CD”
Y dd 20 dup(15, 3 dup(?), 0)
Z db 3 dup(?)
W dw Z-X
假设变量X的偏移地址为20H。
(1)写出变量X各数据在内存中的具体位置和相关内存单元的值。
0FFH
00H
0FEH
0FFH
44H
43H
(2)写出变量Y,Z的偏移地址。
(3)写出变量W的值。
答:(1)变量X各数据在内存中的具体位置和相关内存单元的值如右图。
(2)变量Y的偏移地址为002H;变量Z的偏移地址为002EH+4520=01BEH
Y
002EH
(3)变量W的值等变量Z和X偏移地址之差01BEH-0020H=019EH
它等于X、Y所占用内存单元的字节数。
3.6 下列指令的源操作数段基址在哪个段寄存器中?
(1)MOV AX, [BP][SI] SS
(2)MOV AX, CS:8[DI] CS
(3)MOV AX, 2[EBP*1] SS
(4)MOV AX, FS:4[ESP] FS
(5)MOV AX, 2[EBP][EAX] SS
(6)MOV AX, [ECX][EBP*4] DS
(7)MOC AX, [EDX][EBP] DS
(8)MOV AX,ES:10[EBP][EAX*2] ES
3.7 判断下列指令是否正确。若不正确,指出错误原因
(1)MOV AX, [EBX] √
(2)MOV SI, DL ×,两个操作数类型不匹配。
(3)MOV EBP,[ESP][EAX*3] ×,比例因子不能为3。
(4)LEA AX, 3006H ×,LEA指令的源操作数必须为内存操作数。
(5)MOV [BP][DI], 0 ×,操作数类型无法确定。
(6)MOV [SI], [DI]是 ×,不能同时出现两个内存操作数。
(7)MOV ES, 1000H ×,装载段寄存器时,源操作数不能为立即数。
(8)如果“X”是常数表达式定义的符号(例如:X EQU 5+6),或者是“DW”定义的内存变量,指令MOV AX, X+2是正确的。否则这条指令是错误的。
(9)MOV AX, CX+2 ×,源操作数表达式CX+2不是一个可以直接计算的“常数表达式”。
(10)指令MOV [EAX][EAX*2], AL √
3.8 现有(DS)=2000H ,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,说明下列指令执行后AX寄存器的内容
(1)MOV AX, 1200H 执行后,(AX)=1200H(立即操作数)。
(2)MOV AX, BX 执行后,(AX)=0100H(寄存器操作数)。
(3)MOV AX, [1200H] 执行后,(AX)=4C2AH(直接地址,EA=1200H)
(4)MOV AX, [BX] 执行后,(AX)=3412H(寄存器间接寻址,EA=0100H)
(5)MOV AX, 1100H[BX] 执行后,(AX)=4C2AH(相对地址,EA=1200H)
(6)MOV AX, [BX][SI] 执行后,(AX)=7856H(基址变址寻址,EA=0102H)
(7)MOV AX, 1100H[BX][SI] 执行后,(AX)=65B7H(相对基址变址寻址EA=1202H)
3.9 下面两条指令的功能有什么区别?
MOV AX, BX:把BX寄存器的内容装入到AX中。
MOV AX, [BX] :把内存储器一个字的内容装入AX寄存器。该字的段基址在DS中,偏移地址在BX中。
3.10 写出执行以下计算的指令序列,各变量均为16位有符号数。
(1) Z←W+(Z-X) (2) Z←W-(X+6)-(R+9)
(3) Z←(W*X)/(Y+6), R←余数 (4) Z←(W-X)/(5*Y)*2
解:
(1) MOV AX, W
MOV BX, Z
SUB BX , X
ADD AX, BX
MOV Z, AX
(2) MOV AX, W
MOV BX, X
ADD BX, 6
SUB AX, BX
MOV BX, R
ADD BX, 9
SUB AX, BX
MOV Z, AX
(3) MOV AX, W
IMUL X
MOV BX, Y
ADD BX, 9
IDIV BX
MOV Z, AX
MOV R, DX
(4) MOV AX, Y
MOV BX, 5
IMUL BX
MOV BX, AX
MOV AX, W
SUB AX, X
MOV CX, 2
IMUL CX
IDIV BX
MOV Z, AX
3.11 一个双字长有符号数存放在DX(高位)AX(低位)中,写出求该数相反数的指令序列。结果仍存入DX,AX寄存器。
解:NOT DX
NOT AX
ADD AX, 1
ADC DX0
3.12 内存缓冲区BUFFER定义如下,按照要求,写出指令序列
BUFFER DB 20 DUP(?)
(1)将缓冲区全部置为0,并使执行时间最短。
(2)将缓冲区全部置为空格字符(ASCII代码20H),使用的指令条数最少
(3)将缓冲区各字节依次设置为0,1,2,3,4,……,19
(4)将缓冲区各字节依次设置为0,-1,-2,-3,-4,……,-19
(5)将缓冲区各字节依次设置为30,29,28,27,……,11
(6)将缓冲区各字节依次设置为0,2,4,6,8,……,38
(7)将缓冲区各字节依次设置为0, 1, 2, 3, 0, 1, 2, 3, …, 3
解:(1)XOR EAX, EAX
MOV DWORD PTR [BUFFER], EAX
MOV DWORD PTR [BUFFER+4], EAX
MOV DWORD PTR [BUFFER+8], EAX
MOV DWORD PTR [BUFFER+12], EAX
MOV DWORD PTR [BUFFER+16], EAX
(2)MOV AL, 20H
MOV CX, 20
LEA BX, BUFFER
ONE:MOV [BX], BUFFER
INC BX
LOOP ONE
(3)XOR BX, BX
MOV CX, 20
ONE:MOV BUFFER[BX], BL
INC BX
LOOP ONE
(4)XOR BX, BX
XOR AL, AL
MOV CX, 20
ONE:MOV BUFFER[BX], AL
INC BX
DEC AL
LOOP ONE
(5)XOR BX, BX
MOV AL, 30
MOV CX, 20
ONE:MOV BUFFER[BX], AL
INC BX
DEC AL
LOOP ONE
(6)XOR BX, BX
XOR AL, AL
MOV CX, 20
ONE:MOV BUFFER[BX], AL
INC BX
ADD AL, 2
LOOP ONE
(7)XOR BX, BX
MOV CX, 5
ONE :MOV BUFFER[BX], 0
MOV BUFFER[BX+1], 1
MOV BUFFER[BX+2], 2
MOV BUFFER[BX+3], 3
ADD BX, 4
LOOP ONE
3.13 编写循环结构程序,进行下列计算,结果存入RESULT单元
(1)1+2+3+4+5+6+ …… +100
(2)1+3+5+7+9+11+ …… +99
(3)2+4+6+8+10+ …… +100
(4)1+4+7+10+13+ …… +100
(5)11+22+33+44+ …… +99
解:(1) CODE SEGMENT
ASSUME CS: CODE
RESULT DW ?
START:
XOR AX, AX
MOV CX, 100
AGAIN: ADD AX, CX
LOOP AGAIN
MOV RESULT, AX
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
(2)CODE SEGMENT
ASSUME CS: CODE
RESULT DW ?
START: XOR AX, AX
MOV CX, 50
MOV BX, 1
AGAIN: ADD AX, BX
ADD BX, 2
LOOP AGAIN
MOV RESULT, AX
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
(3) CODE SEGMENT
ASSUME CS: CODE
RESULT DW ?
START:
XOR AX, AX
MOV CX, 50
MOV BX, 2
AGAIN: ADD AX, BX
ADD BX, 2
LOOP AGAIN
MOV RESULT, AX
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
(4) CODE SEGMENT
ASSUME CS: CODE
RESULT DW ?
START:
XOR AX, AX
MOV CX, 34
MOV BX, 1
AGAIN: ADD AX, BX
ADD BX, 3
LOOP AGAIN
MOV RESULT, AX
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
(5) CODE SEGMENT
ASSUME CS: CODE
RESULT DW ?
START:
XOR AX, AX
MOV CX, 9
MOV BX, 11
AGAIN: ADD AX, BX
ADD BX, 11
LOOP AGAIN
MOV RESULT, AX
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
3.14 已知ARRAY是5行5列的有符号字数组,编写程序,进行下
列计算(假设和仍然为16b,不会产生溢出)
(1) 求该数组每一行上第4列元素之和(列号从0开始)
(2) 求该数组第3行所有元素之和(行号从0开始)
(3) 求该数组正对角线上所有元素之和
(4) 求该数组反对角线上所有元素之和
解:假设数据段已定义如下:
DATA SEGMENT
ARRAY DW 1, 6, 9, 23,12 ;定义数组ARRAY
DW 54, 23, 15, -92, 37 ;每一行5个数据
DW -99, 231, 76, 81, 90 ;共5行
DW 33, 67, 81, -99, 0 ;共计25个数据
DW 123, -52, 77, -180, 89
SUM DW ? ;SUM存放结果
DATA ENDS
(1) CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
MOV AX, 0 ;累加器在循环之前清零
MOV CX, 5 ;计数器置初值
MOV SI, 4*2 ;第1行第4列元素在数组内的位移
NEXT: ADD AX, ARRAY[SI]
ADD SI, 5*2 ;SI指向下一行第4列元素
LOOP NEXT
MOV SUM, AX
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
(2) CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
MOV AX, 0 ;累加器在循环之前清零
MOV CX, 5 ;计数器置初值
MOV SI, 3*5*2 ;第3行第0列元素在数组内的位移
NEXT: ADD AX, ARRAY[SI]
ADD SI, 2 ;SI指向本行下一列元素
LOOP NEXT
MOV SUM, AX
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
(3) CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
MOV AX, 0 ;累加器在循环之前清零
MOV CX, 5 ;计数器置初值
MOV SI, 0
NEXT: ADD AX, ARRAY[SI]
ADD SI, 5*2+2
LOOP NEXT
MOV SUM, AX
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
(4) CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
MOV AX, 0
MOV CX, 5
MOV SI, 4*2
NEXT: ADD AX, ARRAY[SI]
ADD SI, (5-1)*2
LOOP NEXT
MOV SUM, AX
MOV AX, 4C00H
INT 21H
CODE ENDS
END STAR
3.15 变量X, Y, Z均为一字节压缩BCD码表示的十进制数,写出指令序列,求它们的和(用2字节压缩BCD码表示)。
解: XOR AX, AX
MOV AL, X
ADD AL, Y ;完成X+Y
DAA ;压缩BCD码加法调整
ADC AH, 0
ADD AL, Z ;完成X+Y+Z
DAA ;压缩BCD码加法调整
ADC AH, 0
3.16 设(BX)=0E3H,变量VALUE中存放内容为79H,指出下列指令单独执行后的结果。
(1)指令“XOR BX, VALUE” 执行后,(BX)= 009AH
(2)指令“AND BX, VALUE” 执行后,(BX)= 0061H
(3)指令“OR BX, VALUE” 执行后,(BX)= 00FBH
(4)指令“XOR BX, 0FFH” 执行后,(BX)= 001CH
(5)指令“AND BX, BX” 执行后,(BX)= 00E3H
(6)指令“AND BX, 0” 执行后,(BX)= 0000H
3.17 编写程序,从键盘上输入20个十进制数字,求这些数字的和,向显示器输出。
答:
INCLUDE YLIB.H
DATA SEGEMNT
MESS1 DB 0DH, 0AH, „Input 20 decimal digits please : $‟
MESS2 DB 0DH, 0AH, „Their sum is : $‟
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
LEA DX, MESS1
MOV AH, 09H
INT 21H ;输出提示信息
XOR BX, BX ;BX用作累加器,清零
MOV CX, 20 ;循环计数器置初值
AGAIN:
MOV AH, 01H
INT 21H ;输入一个数字(在AL中)
AND AL, 0FH ;转换成二进制数
ADD BL, AL ;累加
ADC BH, 0
LOOP AGAIN
LEA DX, MESS2
MOV AX, BX
CALL WRITEDEC ;输出20个数字的和
CALL CRLF
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
3.18 阅读以下程序,指出它的功能。
MOV CL, 04
SHL DX, CL
MOV BL, AH
SHL AX, CL
SHR BL, CL
OR DL, BL
答:把32位二进制代码(DX, AX)联合左移4位。
3.19 已知(DX)=0B9H,(CL)=3,(CF)=1,确定下列指令单独执行以后DX寄存器的值。
(1)指令“SHR DX, 1” 执行之后,(DX)= 005CH
(2)指令“SAR DX, CL” 执行之后,(DX)= 0017H
(3)指令“SHL DX, CL” 执行之后,(DX)= 05C8H
(4)指令“SHL DL, 1” 执行之后,(DX)= 0172H
(5)指令“ROR DX, CL” 执行之后,(DX)= 2017H
(6)指令“ROL DX, CL” 执行之后,(DX)= 05C8H
(7)指令“SAL DH, 1” 执行之后,(DX)= 00B9H
(8)指令“RCL DX, CL” 执行之后,(DX)= 05CCH
(9)指令“RCR DL, 1” 执行之后,(DX)= 00DCH
3.20 编写程序,从键盘上输入一个0~65535之间的十进制无符
号数,然后用二进制格式输出这个值。例如,键盘输入
“35”,显示器输出“00000000 00100011”。
答:
INCLUDE YLIB.H
DATA SEGEMNT
MESS1 DB 0DH, 0AH, „Input a unsigned decimal integer number please : $‟
MESS2 DB 0DH, 0AH, „The number in binary is : $‟
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
LEA DX, MESS1
CALL READDEC
展开阅读全文