文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言程序设计习题及答案

汇编语言程序设计习题及答案

汇编语言程序设计习题及参考答案

习题一

1.1把下列2、8、16进制数转换成为十进制数

(1)(1011011)2(2)(0.10110)2(3)(111111.01)2(4)(1000001.11)2(5)(377)8(6)(0.24)8(7)(3FF)16(8)(2A.4)16

解:(1)(1011011)2=64+16+8+2+1=91

另解:原式=(5B)16=5×16+11=91

(2)(0.10110)2=0.5+0.125+0.0625=0.6875

(3)(111111.01)2=32+16+8+4+2+1+0.25=63.25

另解:原式=(1000000-1+0.01)2=64-1+0.25=63.25

(4)(1000001.11)2=64+1+0.5+0.25=65.75

(5)(377)8=3×64+7×8+7=255

另解:原式=(400-1)8=4×64-1=255

(6)(0.24)8=2×0.125+4×0.015625=0.3125

(7)(3FF)16=3×256+15×16+15=1023

另解:原式=(400-1)16=4×256-1=1023

(8)(2A.4)16=2×16+10+4×0.0625=42.25

另解:原式=2×16+10+4÷16=42.25

1.2 把下列十进制数转换为2、16进制数

(1)(127)10(2)(33)10(3)(0.3)10(4)(0.625)10

(5)(1023.5)10(6)(377)10(7)(1/1024)10(8)(377/32)10解:(1)(127)10 =64+32+16+8+4+2+1= (111 1111)2=(7F)16

另解:原式=(128-1)10=(1000 0000-1)2=(111 1111)2=(7F)16

(2)(33)10=32+1= (10 0001)2=(21)16

(3)(0.3)10 = (0.0100 1100 1……)2=(0.4CCC……)16

(4)(0.625)10= 0.5+0.125=(0.101)2=(0.A)16

(5)(1023.5)10 = 512+256+128+64+32+16+8+4+2+1+0.5

=(11 1111 1111.1)2=(3FF.8)16

(6)(377)10 =256+64+32+16+8+1=(1 0111 1001)2=(179)16

(7)(1/1024)10=(0.0000 0000 01)2=(0.004)16

(8)(377/32)10=(256+64+32+16+8+1)÷(32)= (101111001)2÷(100000)2

=(1011.11001)2=(0B.C1)16

1.3 把下列二进制数转换为十六进制数

(1)(100011)2(2)(0.11101)2(3)(11111.11)2(4)(0.00101)2解:(1)(100011)2=(10‟0011)2=23H

(2)(0.11101)2=(0.1110‟1000)2=0.E8H

(3)(11111.11)2=(1‟1111.1100)2=1F.CH

(4)(0.00101)2=(0.0010‟1000)2=0.28H

1.4 把下列十六进制数转换为二进制数

(1)(3B6)16(2)(100)16(3)(80.2)16(4)(2FF.A)16解:(1)(3B6)16=(0011 1011 0110)2

(2)(100)16=(0001 0000 0000)2

(3)(80.2)16=(1000 0000.0010)2

(4)(2FF.A)16 =(0010 1111 1111.1010)2

1.5 如果用24b储存一个无符号数,这个数的范围是什么?如果储存的是一个补码表示的有符号数,那么这个数的范围又是什么?

答:如果用24b储存一个无符号数,这个数的范围应为:0~224-1

如果用24b储存一个补码表示的有符号数,这个数的范围应为:-223~+223-1

1.6 两个无符号数,它们的大小等于十进制数210和303,用N位二进制存储时,相加产生了进位,用N+1位二进制存储时,相加没有产生进位。这个N等于多少?为什么?

答:210+303=513,29<513<210,取N=9时,相加会产生进位,取N=10,相加就不会产生进位,因此,本题中N=9。

1.7 两个8位二进制无符号数相加后没有产生进位,符号标志SF=1,它们和应在什么范围内?如果SF=0,那么和又在什么范围内?

答:如果SF=1,它们的和应在27~28-1,也就是128~255之内。

如果SF=0,它们的和应在0~27-1,也就是0~127之内。

1.8 两个8位补码表示的有符号数相加时,什么情况下会使进位标志等于“1”?相减时,又是什么情况下会使借位标志等于“1”?

答:两个8位补码表示的有符号数相加时,下列情况会使进位标志等于“1”:

两个负数相加;

两个异号数相加,和为正(不会产生溢出)。

两个8位补码表示的有符号数相减时,下列情况会使借位标志等于“1”:

两个同号数相减,差为负(不会产生溢出);

正数减负数(有可能产生溢出);

1.9 用符号“〉”把下面的数按从大到小的顺序“连接”起来

[X1]补=10110111 [X2]原=10110111 [X3]反=10110111 [X4]补=10110110 [X5]无符号数=10110111

解:X1=-0100 1001B, X2=-011 0111B, X3=-0100 1000B, X4=-0100 1010B, X5=+1011 0111B 因此:X5>X2>X3>X1>X4

1.10 用8位补码完成下列运算,用二进制“真值”的格式给出运算结果,并指出运算后CF、OF、ZF、SF、PF标志位的状态。

(1)127+126 (2)126-127 (3)-100-120 (4)-100-(-120)

解:(1)127+126

[127]补=0111 1111,[126]补=0111 1110,

[127+126]补=1111 1101,[127+126]=-0000 0011(溢出)

COZSP=01010

(2)126-127

[126]补=0111 1110,[-127]补=1000 0001,

[126-127]补=1111 1111,[126-127]=-000 0001

COZSP=10011

(3)-100-120

[-100]补=1001 1100,[-120]补=1000 1000,

[-100-120]补=0010 0100,[-100-120]=+0010 0100(溢出)

COZSP=01001

(4)-100-(-120)

[-100]补=1001 1100,[-120]补=1000 1000,[ [-120]补]求补=0111 1000,

[-100-(-120)]补=0001 0100,[-100-(-120)]=+0001 0100

COZSP=00001

1.11 把二进制代码1001011101011000分别“看作”是:

(1)二进制无符号数(2)二进制补码(3)压缩BCD码(4)非压缩BCD码哪一种情况下它代表的“值”最大?

答:看作二进制无符号数时,它代表的“值”最大。

分析:看作二进制补码时,它代表一个负数,而其它的情况下,它均为正数。因此,看作二进制补码时,它代表的值最小。

把这组代码用十六进制数字形式写出:9758

对于无符号数,它的值等于十六进制的9758H;

对于压缩BCD码,它的值等于十进制的9758,显然小于9758H;

对于非压缩BCD码,它的值等于十进制的78,显然更小于9758H;

因此,看作二进制无符号数时,它代表的“值”最大。

1.12 CPU使用“寄存器”有什么好处?为什么?

答:CPU使用寄存器主要有两个好处:

(1)寄存器位于CPU内部,访问寄存器比访问内存储器速度快;

(2)寄存器数量大大少于内存储器单元个数,标识寄存器使用的二进制代码比标识内存储器单元使用的二进制代码少得多,可以缩短指令长度。

1.13 已知8086系统某存储单元物理地址为12345H,写出4个可以与它对应的“逻辑地址”。答:可以与物理地址12345H对应的逻辑地址有:

1234H:0005H, 1230H:0045H, 1220H:0145H, 1224H:0105H, ……

1.14 已知8086系统某存储单元物理地址为12345H,可以与它对应的“逻辑地址”中,段基址最大值,最小值分别是多少?

答:可以与物理地址12345H对应的逻辑地址中,段基址的最大值为1234H,最小值为0235H。分析:偏移地址取最大值时,对应的段基址为最小。偏移地址可选的最大值为0FFF5H(最后一位必须为5),因此最小的段基址=(12345H-0FFF5H)/10H=0235H。

偏移地址取最小值时,对应的段基址最大。偏移地址可选的最小值为0005H(最后一位必须为5),因此最大的段基址=(12345H-0005H)/10H=1234H。

1.15 8086微机最多可以有多少个不同的“段基址”?为什么?

答:由于段基址由16位二进制数表示,因此可以有216=65536个不同的段基址。

1.16 在图1-6中,假设已有(R1)=X,(R2)=Y,分别用它的机器指令和符号指令写出计算R0←4X+2Y的程序。想一想,怎样做才能尽量减少指令数量?

答:假设已有(R1)=X,(R2)=Y,可以编制如下计算R0←4X+2Y的程序:符号指令机器指令注释

MOV R0, R1 1 000 00 01(81H)R0←X

ADD R0, R1 1 001 00 01(91H)R0←X+X

ADD R0, R2 1 001 00 10(92H)R0←2X+Y

ADD R0, R0 1 001 00 00(90H)R0←4X+2Y

减少指令的方法是先计算出2X+Y,然后再计算4X+2Y。可以有多种不同的写法。

1.17 什么是“逻辑地址”?什么是“线性地址”?什么是“物理地址”?它们如何转换?答:由段的起始地址(段基址)或者段的编号和段内相对地址两部分表示的地址称为“逻辑地址”。

经过“分段机构”处理后,用一组二进制代码表示的地址称为“线性地址”。

经过“分页机构”处理后,用一组二进制代码表示的存储单元的“真实”的地址称为“物理地址”。物理地址的位数等于地址总线的宽度。

工作在实地址模式下的80X86MPU不使用线性地址,物理地址=段基址×16+段内偏移地址。

80X86MPU工作在保护模式下时,分段机构用段的编号在“段描述符表”中找到段的起始地址,加上偏移地址得到“线性地址”。

分页机构把线性地址从高位到低位分解为“页组地址:页地址:页内地址”三部分,由页组地址(页组号)查找“页组表”,获得该页组对应的“页表”首地址。然后用页地址(页号)去查“页表”,得到该页的起始地址,拼接上页内地址,得到“物理地址”。

保护模式下也可以关闭分页机构,此时线性地址等于物理地址。

1.18 32位80X86和16位80X86中央处理器的段寄存器有什么不同?

答:16位80X86CPU的段寄存器长度为16位,存放的是一个段起始地址的高16位。

32位80X86CPU的段寄存器长度仍然为16位,存放的是一个段在“段描述符表”中的序号,表的编号(对每一个程序,有两张段描述符表)和这个段的优先级别。

1.19 叙述“保护模式”和“虚拟8086方式”之间的关系。

答:保护模式是32位80X86MPU的工作方式,对当前运行的所有任务实施保护。

虚拟8086方式是保护模式下某一个任务的工作模式,该任务使用类似于实地址方式下的物理地址产生方式,使用1MB的虚拟内存空间,主要用于运行8086程序。

1E H

30H

41H

42H

43H

0F F H

00H

0C A H

0F F H

00H

0F E H

0F F H

44H

43H 0020H

002E H X Y

习题二

2.1 某数据段内有如下数据定义:

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)按照图2-1的格式写出变量X各数据在内存中的具体位置和相关内存单元的值。

(2)写出变量Y,Z的偏移地址。

(3)写出变量W的值

答:(1)变量X各数据在内存中的具体位置和相关内存单元的值

如右图。

(2)变量Y的偏移地址为002EH;

变量Z的偏移地址为002EH+4×5×20=01BEH

(3)变量W的值等于变量Z和X偏移地址之差

01BEH-0020H=019EH

它等于变量X、Y所占用内存单元的字节数。

2.2 80x86指令系统有哪几种类型的指令操作数?比较使用不同

类型操作数后的指令长度和指令执行时间。

答:80X86指令系统按照长度划分,有以下四种指令操作数:

(1)寄存器操作数,指令短,执行速度快;

(2)立即操作数,指令较长,执行速度快;

(3)寄存器间接寻址和基址变址寻址表示的内存储器操作数,这类指令长度较短,执行速度较慢(需要访问存储器);

(4)直接地址,寄存器相对寻址,相对的基址变址寻址表示的内存储器操作数,这类指令长度较长,执行速度较慢(需要计算物理地址,访问存储器)。

2.3 下列指令的源操作数段基址在哪个段寄存器中?

(1)MOV AX, [BP][SI] (2)MOV AX, CS:8[DI]

(3)MOV AX, 2[EBP*1] (4)MOV AX, FS:4[ESP]

(5)MOV AX, 2[EBP][EAX] (6)MOV AX, [ECX][EBP*4]

(7)MOC AX, [EDX][EBP] (8)MOV AX, ES:10[EBP][EAX*2]

答:各指令源操作数段基址使用的段寄存器如下:

(1)SS(2)CS(3)SS(4)FS

(5)SS(6)DS(7)DS(8)ES

2.4 判断下列指令是否正确。若不正确,指出错误原因

(1)MOV AX, [EBX] (2)MOV SI, DL

(3)MOV EBP, [ESP][EAX*3](4)LEA AX, 3006H

(5)MOV [BP][DI], 0 (6)MOV [SI], [DI]

(7)MOV ES, 1000H (8)MOV AX, X+2

(9)MOV AX, CX+2 (10)MOV [EAX][EAX*2], AL

答:(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是正确的。

2.5 现有(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

(2)MOV AX, BX

(3)MOV AX, [1200H]

(4)MOV AX, [BX]

(5)MOV AX, 1100H[BX]

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

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

答:(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)= 4C2A H(相对地址,EA=1200H)(6)指令MOV AX, [BX][SI] 执行后,(AX)=7856H(基址变址寻址,EA=0102H)(7)指令MOV AX, 1100H[BX][SI] 执行后,(AX)=65B7H

(相对基址变址寻址,EA=1202H)

2.6 已经定义字符串MYSTRING如下:

MYSTRING DB …A Sample for addressing.‟

用适当的指令把这个字符串的第5,12个字符(注:第0个字符是‟A‟)送入BX寄存器。

答:可以用如下两条指令完成:

MOV BL, MYSTRING[5]

MOV BH, MYSTRING[12]

2.7 下面两条指令的功能有什么区别?

MOV AX, BX

MOV AX, [BX]

答:指令“MOV AX, BX”把BX寄存器的内容装入到AX中。

指令“MOV AX, [BX]”把内存储器一个字的内容装入AX寄存器。该字的段基址在DS中,偏移地址在BX中。

2.8 已经定义数据段如下:

DA TA SEGMENT

NUM=56

X DB NUM

Y DB 27

Z DW 148

DA TA ENDS

指出下列指令中的错误:

(1)MOV Y, X (2)MOV BL, 04B8H

(3)MOV AL, Z (4)MOV [BX], 3

(5)MOV [BX], [DI] (6)MOV DS, DA TA

(7)MOV NUM, AX (8)MOV ES, DS

(9)MOV AX, FLAGS (10)MOV CS, AX

答:(1)指令MOV Y, X 同时出现了两个存储器操作数。

(2)指令MOV BL, 04B8H 操作数类型不匹配(04B8H是16位立即数,BL是8位寄存器)。

(3)指令MOV AL, Z 操作数类型不匹配(Z是16位操作数,BL是8位寄存器)。

(4)指令MOV [BX], 3 操作数类型不能确定。

(5)指令MOV [BX], [DI] 出现了两个存储器操作数。

(6)指令MOV DS, DA TA不能把立即数装入段寄存器。

(7)指令MOV NUM, AX 立即数不能用作目的操作数。

(8)指令MOV ES, DS 不能在段寄存器之间直接传输。

(9)指令MOV AX, FLAGS中,FLAGS寄存器只能隐含在少量指令中使用。

(10)指令MOV CS, AX 中,CS寄存器不能用作目的操作数。

2.9 用适当的指令,把下面字符串STRING中的“&”字符用空格代替。

STRING DB “The Date is FEB&03”

答:可以使用如下指令:

MOV STRING[15], 20H ; 20H是空格的ASCII代码

习题三

3.1 根据以下要求,写出对应的汇编语言指令

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

(2)使用BX和SI寄存器进行基址变址寻址,把存储器中一字节内容与AL内容相加,结果存入存储单元。

(3)用寄存器BX和位移量0B2H的寄存器相对寻址方式,把存储器中一个双字与ECX 相加,结果存入ECX。

(4)用偏移地址1020H直接寻址,把存储单元一个字内容与立即数3相加,结果存入存储单元。

(5)将AL寄存器内容与立即数120相加,结果存入AL寄存器。

答:(1)ADD DX, BX

(2)ADD [BX][SI], AL

(3)ADD ECX, [BX+0B2H]

(4)ADD WORD PTR[1020H], 3

(5)ADD AL, 120

3.2 求以下各十六进制数与62A8H之和,并根据结果写出标志位SF、CF、ZF、OF的值。(1)1234H (2)4321H (3)0CFA0H (4)9D60H (5)0FFFFH

答:(1)1234H+62A8H=74DCH SCZO= 0000

(2)4321H+62A8H=0A5C9H SCZO= 1001

(3)0CFA0H+62A8H=3248H SCZO= 0100

(4)9D60H +62A8H=0008H SCZO= 0100

(5)0FFFFH+62A8H=62A7H SCZO= 0100

3.3求以下各十六进制数与4AE0H之差,并根据结果写出标志位SF、CF、ZF、OF的值。(1)1234H (2)5D90H (3)9076H (4)0EA04H (5)0FFFFH

答:

(1)1234H-4AE0H=0C754H SCZO= 1100

(2)90H-4AE0H=12B0H SCZO= 0000

(3)9076H-4AE0H=4597H SCZO= 0001

(4)0EA04H-4AE0H=9F24H SCZO= 1000

(5)0FFFFH-4AE0H=0B51FH SCZO= 1000

3.4 写出执行以下计算的指令序列,其中各变量均为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, 6

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.5 一个双字长有符号数存放在DX(高位)AX(低位)中,写出求该数相反数的指令序列。

结果仍存入DX,AX寄存器

解:NOT DX ;首先将(DX, AX)取反

NOT AX

ADD AX, 1 ;最低位加1,注意:不能用INC指令

ADC DX, 0 ;把进位(如果有)传递到高位

3.6 指令DEC BX和SUB BX, 1的执行结果一样吗?请分析。

解:指令DEC BX和SUB BX, 1分别执行后,BX寄存器内的值相同,但是CF标志位的状态可能不同,这是由于DEC指令执行后不改变CF的状态。

3.7 已知内存变量X, Y, Z均由“DB”伪操作定义,按照以下要求,使用MOVZX或MOVSX

指令进行位数扩展,求三个数的16b和。

(1)如果X,Y,Z为无符号数

(2)如果X,Y,Z为有符号数

解:(1)MOVZX AX, X

MOVZX BX, Y

ADD AX, BX

MOVZX BX, Z

ADD AX, BX

(2)MOVSX AX, X

MOVSX BX, Y

ADD AX, BX

MOVSX BX, Z

ADD AX, BX

3.8 内存缓冲区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], AL

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.9 编写循环结构程序,进行下列计算,结果存入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

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

AGAIN: ADD AX, BX

ADD BX, 11

LOOP AGAIN

MOV RESULT, AX

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

3.10 已知ARRA Y是5行5列的有符号字数组,编写程序,进行下列计算(假设和仍然为

16b,不会产生溢出)

(1)求该数组第4列所有元素之和(列号从0开始)

(2)求该数组第3行所有元素之和(行号从0开始)

(3)求该数组正对角线上所有元素之和

(4)求该数组反对角线上所有元素之和

解:假设数据段已定义如下:

DA TA 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存放结果

DA TA ENDS

(1)CODE SEGMENT

ASSUME CS: CODE, DS: DA TA

START: MOV AX, DA TA

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: DA TA

START: MOV AX, DA TA

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: DA TA

START: MOV AX, DA TA

MOV DS, AX

MOV AX, 0 ;累加器在循环之前清零

MOV CX, 5 ;计数器置初值

MOV SI, 0 ;第0行第0列元素在数组内的位移NEXT: ADD AX, ARRAY[SI]

ADD SI, 5*2+2 ;SI指向正对角线上下一个元素

LOOP NEXT

MOV SUM, AX

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

(4)CODE SEGMENT

ASSUME CS: CODE, DS: DA TA

START: MOV AX, DA TA

MOV DS, AX

MOV AX, 0 ;累加器在循环之前清零

MOV CX, 5 ;计数器置初值

MOV SI, 4*2 ;第0行第4列元素在数组内的位移NEXT: ADD AX, ARRAY[SI]

ADD SI, (5-1)*2 ;SI指向反对角线上下一个元素

LOOP NEXT

MOV SUM, AX

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

3.11 编写程序,利用公式:N2=1+3+5+ …… +(2N-1)计算N2的值,假设N=23。解:DA TA SEGMENT

N DW 23

SQUARE DW ? ;存放结果

DA TA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DA TA

START: MOV AX, DA TA

MOV DS, AX

MOV CX, N ;循环计数器置初值

XOR AX, AX ;累加器清零

MOV BX, 1 ;数列第一项

ONE: ADD AX, BX

ADD BX, 2

LOOP ONE

MOV SQUARE, AX

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

3.12 变量X, Y, Z均为一字节压缩BCD码表示的十进制数,写出指令序列,求它们的和(用

2字节压缩BCD码表示)。

解:XOR AX, AX ;清AX,用于存放2字节结果

MOV AL, X

ADD AL, Y ;完成X+Y

DAA ;压缩BCD码加法调整

ADC AH, 0 ;把可能的进位收集到AH中

;AH中最大的可能值为2,因此不需要BCD加法调整ADD AL, Z ;完成X+Y+Z

DAA ;压缩BCD码加法调整

ADC AH, 0 ;把可能的进位收集到AH中

;计算完成,结果(2字节压缩BCD码)在AX中

3.13 数组LIST1内存有20个非压缩BCD码表示的单字节十进制数,写出完整程序,求这

20个BCD数之和,结果(非压缩BCD码)存入SUM1双字单元。

解:CODE SEGMENT

ASSUME CS: CODE

LIST1 DB …6705762998‟;20个非压缩BCD数

DB …4322687310‟

SUM1 DD ? ;存放结果(20个数之和)

START: XOR AX, AX ;累加器清零

MOV CX, 20 ;循环计数器置初值

LEA BX, LIST1 ;地址指针置初值

ONE: ADD AL, CS:[BX] ;加入一个非压缩BCD数

AAA ;调整,结果在AH(百位、十位),AL(个位)中

INC BX ;修改指针

LOOP ONE ;循环控制

MOV BYTE PTR SUM1, AL ;保存个位

MOV AL, AH

MOV AH, 0 ;百位、十位(二进制)存入AX

AAM ;分解百位到AH,十位到AL

MOV WORD PTR SUM1+1, AX ;保存百位、十位

MOV BYTE PTR SUM1+3, 0 ;千位清零(和最大为9*20=180)

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

3.14数组LIST2内存有20个压缩BCD码表示的单字节十进制数,写出完整程序,求这20

个BCD数之和,结果(压缩BCD码)存入SUM2双字单元。

解:CODE SEGMENT

ASSUME CS: CODE

LIST2 DB 12H, 34H, 56H, 15H, 82H, 52H, 48H, 19H, 31H, 63H

DB 22H, 33H, 44H, 55H, 66H, 77H, 88H, 99H, 11H, 39H SUM2 DD ?

START: XOR AX, AX ;累加器清零

XOR BX, BX ;地址指针置初值

MOV CX, 20 ;循环计数器置初值

ONE: ADD AL, LIST2[BX] ;加入一个压缩BCD数

DAA ;调整

XCHG AH, AL ;交换AH和AL

ADC AL, 0 ;收集进位(百位、千位)

DAA ;高位(百位、千位)调整

XCHG AH, AL ;恢复AH和AL

;(AH)=千位、百位,(AL)=十位、个位INC BX ;修改指针

LOOP ONE ;循环控制

MOV WORD PTR SUM2, AX ;保存千、百、十、个位

MOV WORD PTR SUM2+2, 0;高位清零

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

3.15 数组LIST3内存有20个压缩BCD码表示的双字节十进制数,写出完整程序,求这20

个BCD数之和,结果(压缩BCD码)存入SUM3双字单元。

解:CODE SEGMENT

ASSUME CS: CODE

LIST3 DW 1234H, 3456H, 5678H, 1523H, 8263H,

DW 5234H, 4856H, 1926H, 3177H, 6389H

DW 2211H, 3322H, 4433H, 5544H, 6655H

DW 7766H, 8877H, 9988H, 1167H, 3944H

SUM3 DD ?

START: XOR DX, DX

XOR AX, AX ;累加器清零

LEA BX, LIST3 ;地址指针置初值

MOV CX, 20 ;循环计数器置初值

ONE: ADD AL, CS:[BX] ;加入第一字节压缩BCD数(十位、个位)DAA ;调整

XCHG AH, AL ;交换AH和AL

INC BX ;修改指针,指向高位字节(千位、百位)

ADC AL, CS:[BX] ;高位累加,并收集低位进位

DAA ;高位(百位、千位)调整

XCHG AH, AL ;恢复AH和AL

;(AH)=千位、百位,(AL)=十位、个位INC BX ;修改指针

XCHG DX, AX ;交换AX和DX

ADC AL, 0 ;收集千位上的进位

DAA ;调整,得到和的十万位和万位

XCHG DX, AX ;恢复DX和AX

LOOP ONE ;循环控制

MOV WORD PTR SUM3, AX ;保存千、百、十、个位

MOV WORD PTR SUM3+2, DX ;保存十万位和万位

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

3.16 设(BX)=0E3H,变量V ALUE中存放内容为79H,指出下列指令单独执行后的结果。(1)XOR BX, V ALUE

(2)AND BX, V ALUE

(3)OR BX, V ALUE

(4)XOR BX, 0FFH

(5)AND BX, BX

(6)AND BX, 0

答:

(1)指令“XOR BX, V ALUE”执行后,(BX)= 009A H

(2)指令“AND BX, V ALUE”执行后,(BX)= 0061H

(3)指令“OR BX, V ALUE”执行后,(BX)= 00FB H

(4)指令“XOR BX, 0FFH”执行后,(BX)= 001C H

(5)指令“AND BX, BX”执行后,(BX)= 00E3H

(6)指令“AND BX, 0”执行后,(BX)= 0000H

3.17 某密码的加密规则为:‘0’→‘A’,‘1’→‘B’,‘2’→‘C’,……。按照以下要求

编写程序。

(1)把明文“96541833209881”翻译为密文。

(2)把密文“JJBDAHCFFGA”翻译成明文。

答:

(1)明文“96541833209881”翻译为密文。

CODE SEGMENT

ASSUME CS: CODE

TEXT1 DB …96541833209881‟

TEXT2 DB 14 DUP(?)

START:

MOV BX, 0

MOV CX, 14

NEXT:

MOV AL, TEXT1[BX] ;取出一字节明文

ADD AL, …A‟-…0‟;转换成密文

MOV TEXT2[BX], AL ;保存

INC BX

LOOP NEXT

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

(2)密文“JJBDAHCFFGA”翻译成明文。

CODE SEGMENT

ASSUME CS: CODE

TEXT1 DB …JJBDAHCFFGA‟

TEXT2 DB 11 DUP(?)

START:

MOV BX, 0

MOV CX, 11

NEXT:

MOV AL, TEXT1[BX] ;取出一字节密文

SUB AL, …A‟-…0‟;转换成明文

MOV TEXT2[BX], AL ;保存

INC BX

LOOP NEXT

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

3.18 编写程序,从键盘上输入一行明文,按照题3.17的规则翻译成密文,向显示器输出。答:DA TA SEGMENT

MESS DB 0DH, 0AH, “Input some text please : $”

OUTMESS DB 0DH, 0AH, …The text after convert :‟

BUFFER DB 81, ?, 81 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DA TA

START:

MOV AX, DA TA

MOV DS, AX

LEA DX, MESS

MOV AH, 09H

INT 21H ;输出提示信息

LEA DX, BUFFER

MOV AH, 0AH

INT 21H ;输入一行明文

MOV CL, BUFFER+1

MOV CH, 0 ;输入字符个数送CX

LEA BX, BUFFER+2 ;首字符地址送BX

NEXT: MOV AL, [BX]

ADD AL, …A‟-…0‟;将一字节明文转换成密文

MOV [BX], AL ;保存

INC BX

LOOP NEXT

MOV BYTE PTR[BX], …$‟;送字符串结束标记

MOV WORD PTR BUFFER, 2020H ;缓冲区前2字节改为空格

LEA DX, OUTMESS

MOV AH, 09H

INT 21H ;输出转换以后的结果

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

3.19 变量X用DT定义,存有80b有符号数,编写程序,求X的相反数,存入同样用DT

定义的变量Y。

答:CODE SEGMENT

ASSUME CS: CODE

X DT 1234567890H

Y DT ?

START:

MOV CX, 10 ;循环计数器置初值

XOR BX, BX ;地址指针置初值

ONE:

MOV AL, BYTE PTR X[BX]

NOT AL ;X的一字节内容取反

MOV BYTE PTR Y[BX] ;存入Y的一个字节内

INC BX

LOOP ONE

ADD BYTE PTR Y, 1 ;Y的低位字节加1

LEA BX, Y+1 ;从Y的第2字节开始处理

MOV CX, 9 ;共9个字节

TWO:

ADC BYTE PTRCS: [BX], 0 ;收集低位来的进位

汇编语言程序设计题目以及答案

一、单项选择题(每小题1分,共20分) 1、设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是(A) A、85B92H B、86192H C、BB690H D、12169H 2、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(B) A、AX,BX,CX,DX B、BX,BP,SI,DI C、SP,IP,BP,DX D、CS,DS,ES,SS 3、循环指令LOOPNZ终止循环的条件是(B)。 A、CX=0,且ZF=0 B、CX=0,或ZF=1 C、CX10,且ZF=0 D、CX10,或ZF=1 4、对寄存器AX的内容乘以4的正确指令序列是(B)。 A、SHR AX,1 /SHR AX,1 B、SHL AX,1/ SHL,AX,1 C、ROL AX,1 /ROL AX,1 D、RCR AX,1/ RCR AX,1 5、执行INC指令除对SF、ZF有影响外,还要影响的标志位是(A)。 A、OF,AF,PF B、OF,AF,CF C、OF,PF,CF D、AF,PF,CF 6、设DH=10H,执行NEG DH指令后,正确的结果是(D)。 A、DH=10H CF=1 B、DH=0F0H CF=0 C、DH=10H CF=0 D、DH=0F0H CF=1 7、下列传送指令中有语法错误的是(A)。 A、MOV CS,AX B、MOV DS,AX C、MOV SS,AX D、MOV ES,AX 8、下面指令执行后,改变AL寄存器内容的指令是(D)。 A、TEST AL,02H B、OR AL,AL C、CMP AL,BL D、AND AL,BL 9、执行除法指令后,影响的标志位是(D)。 A、CF,OF

汇编语言程序设计题目以及答案

汇编语言程序设计题目以及答案[P1] 汇编语言程序设计题目以及答案 汇编语言是一种底层计算机语言,它直接使用机器指令来编写程序。本文将介绍一些汇编语言程序设计的题目,并提供相应的答案。通过 这些题目和答案的学习,读者可以更好地理解和掌握汇编语言程序设 计的基本概念和技巧。 [题目一] 计算两个数的和 要求:编写汇编程序,计算两个给定的整数的和,并将结果存储在 指定的内存位置中。 答案: ```assembly section .data num1 dd 10 ; 第一个整数 num2 dd 20 ; 第二个整数 result dd 0 ; 结果 section .text global _start _start: mov eax, [num1] ; 将num1值存入寄存器eax

add eax, [num2] ; 将num2值与eax寄存器中的值相加 mov [result], eax ; 将结果存储到result变量 mov eax, 1 ; 准备执行系统调用 mov ebx, 1 ; 文件描述符:标准输出 mov ecx, result ; 输出的数据 mov edx, 4 ; 数据长度 int 0x80 ; 执行系统调用 mov eax, 1 ; 准备执行系统调用 xor ebx, ebx ; 正常退出 int 0x80 ; 执行系统调用 ``` [题目二] 字符串反转 要求:编写汇编程序,将一个给定的字符串反转,并将结果存储在指定的内存位置中。 答案: ```assembly section .data str db 'Hello', 0 ; 待反转的字符串

汇编语言程序设计试题和答案

《汇编语言程序设计》试题 专业姓名成绩 一、单项选择题(每1分,共15分). 1将下列二进制数0111,1111,1111 转换为16进制数和10进制数是() A.07FFH 3021D B. 6FEH 1021D C. 07FFH 2012D D. 07FFH 2047D 2. 在1BM Pc机的IN和OUT 指令中,I/o端口号通常是由Dx寄存器来提供的,但有时也可以在 指令中用一个字节来表示端口号。试问可以直接由指令指定的I/o端口号有多少个?( ) A. 127D B.255D C. 256D D.128D 3. 设MYDAT是一个字变量,下列指令中,错误的是() A.MOV BX,10100B B.MOV DS,AX C.ADD BX,[10100H] D.MOV BX,MYDAT[SI] 4.设有关寄存器及存储单元的内容如下:(DS)=2000H,(BX)=0100H,(SI)=0002H, (20100)=12H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(20202)=0B7H,(21203)=65H,试指出:MOV AX,1100h[BX]指令执行后,AX寄存器内是() A.5678H B.4C2AH C.2A4CH D.7856H 5.一台微型计算机的字长为16位,如果采用字节编址,那么它可以访问的最大存储空间是多少字节 ( ),试用16进制数表示该机的地址范围() A.1M 0~FFFFFH B.64K 0~FFFFH C.128K 0~FFFFH D.128K –FFH~FFH 6. 如果在一个程序段开始执行之前,(cs)=0A7F0H,(1P)=2B40H,试问该程序段的第一个字的物 理地址是() A.BAA40H B.AAB40H C.AAA40H D.0D603H 7.下列指令哪个是错误的(设OP1,OP2 是已经用DB定义的变量名)( ) A.CMP BL,OP1 B.MOV [BX],111001B C. INC OP2 D.SAR AX,CL 8.假定(DX)=10111001B,(CL)=05,(CF)=1试确定:RCL DL,CL 指令执行后, DX中的值是() A.00CEH B.009DH C.00B9H D.003BH 9. 有符号定义语句如下: BUFF DB 1,2,3,‘123’ EBUFF DB 0 L EQU EBUFF - BUFF 问L的值为多少( ) A.6D B.7D C.3D D.5D. 10. IBMPC机中下列那些寄存器可以用来存储存储器地址() A、BX,BP,SP,CX B、AX,SI,DI,DX C、BX,SI,DI,SP D、DX,SI,DI,SP 11.下列指令中正确的是() A.MOV [BX],[SI] B.MOV AX,[SI][DI] C.MOV BX,OFFSET NAME[SI] D.MOV BYTE PTR [100],100 12下列程序段执行后,寄存器BX中的内容是什么()

《汇编语言程序设计》期末复习题及答案_

《汇编语言程序设计》期末复习题及答案 一、选择(30题) 1.下列是8位带符号二进制数的补码,其中最大的是( B )。 A、10001000 B、00000001 C、00000000 D、11111111 2.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现。 ( C ) A、占内存空间小,但速度慢 B、占内存空间相同,速度快 C、占内存空间大,但速度快 D、占内存空间相同,速度慢 3.数据定义为:EE DB 3,4 CC DW 3456H,6789H 执行指令“MOV CX,WORD PTR EE+1”后,(CX)= ( B ) A、0304H B、5604H C、3404H D、3456H 4.有如下指令序列: MOV AL,95H MOV CL,2 SAR AL,CL 上述指令序列执行后,AL的内容是( D ) A、05H B、25H C、24H D、0E5H 5.设A=18610,B=2738,C=0BB16,把这三个数看成无符号数,则它们之间的关系是( D )。 A、A>B>C B、 A

汇编语言程序设计习题答案

第一章微型计算机系统概述 1.3习题与综合练习 1.解释和区别下列名词术语 (1)微处理器(MP):具有中央处理器功能的大规模集成电路器件 微型计算机(MC) 微型计算机系统(MCS) (2)硬件:硬件是计算机系统的躯体,由控制器,运算器,存储器,输入设备,输出设备5大部分组成。 软件:软件是计算机的头脑和灵魂,可分为系统软件和应用软件。 (3)字节:8位二进制是一个字节。 字:16位二进制构成一个字。 字长:计算机的运算部件能同时处理的二进制数据的位数。 (4)指令指针:存放BIU要取的下一条指令的偏移地址。 指令寄存器: 指令译码器: 状态寄存器: (5)存储单元: 存储内容: 存储地址: 存储容量: (6)RAM: ROM: 软件固化: 2.冯·诺依曼计算机结构的特点是什么? (1)采用二进制数的形式表示数据和指令。 (2)将指令和数据存放在存储器中。 (3) 计算机硬件由控制器,运算器,存储器,输入设备和输出设备5大部分组成。 3.件数计算机系统中复杂指令集和精简指令集的特点和用途。 复杂指令集(CISC):在微型计算机的体系结构组成结构上是以复杂指令为设计的计算机,在指令的运行过程中按指令的复杂程度来指挥计算机完成各条指令,由于各条指令复杂程度不同分配的时钟周期各不相同,执行指令所需时间就不相同。CISC体系的指令集由微程序来实现,即每一个操作由若干微操作的程序组合来实现。所以CISC可以使用微指令编程的方式实现多种和功能复杂的指令。 精简指令系统(RISC):不管计算机的指令如何复杂,在一个计算机时钟周期内完成,计算速度快,指令集简单。每一条指令直接有硬布线实现,即它的每条指令原则上有自己的一套逻辑时序电路直接实现,所以单条指令的实现所占用的硬件资源较多。因为该体系没有能采用增加单条指令的功能或高位的指令语义,也没有增加指令的条数,而是集中于它的精简指令集上。 4.CPU是计算机系统中的重要部件,试说明CPU的结构和功能。 微处理器是计算机中最关键的部件,由控制器,运算器,寄存器组和辅助部件组成。 控制器是硬件系统的指挥部,负责从存储器中取出指令,分析指令,确定指令类型并对指令进行译码,按时间先后顺序负责向其他各部件发出控制信号,保证各部件协调工作。运算器是用来进行算术运算和逻辑运算的元件。寄存器组用来存放计算所需的各种操作数,地址

汇编语言程序设计习题及答案

汇编语言程序设计习题及答案 汇编语言程序设计习题及答案 汇编语言是一种底层的计算机语言,它直接操作计算机的硬件资源。虽然在现 代计算机编程中,高级语言如C、Java等更为常见,但了解汇编语言的基本原 理和编程技巧对于理解计算机底层工作原理和进行性能优化非常重要。本文将 介绍一些汇编语言程序设计的习题及其答案,帮助读者巩固和提升汇编语言编 程能力。 一、基础习题 1. 编写一个汇编程序,将存储器中的某个字节的值加1,并将结果存回原位置。答案: ```assembly MOV AL, [地址] INC AL MOV [地址], AL ``` 2. 编写一个汇编程序,计算存储器中一个数组的和,并将结果存放在指定的寄 存器中。 答案: ```assembly MOV CX, 数组长度 MOV BX, 数组首地址 MOV AX, 0

LOOP_START: ADD AX, [BX] ADD BX, 2 LOOP LOOP_START ``` 二、进阶习题 1. 编写一个汇编程序,实现字符串的逆序输出。答案: ```assembly MOV SI, 字符串首地址 MOV DI, 字符串尾地址 MOV CX, 字符串长度 DEC CX REVERSE: MOV AL, [SI] MOV AH, [DI] MOV [DI], AL MOV [SI], AH INC SI DEC DI LOOP REVERSE ```

2. 编写一个汇编程序,实现两个16位无符号整数的相乘,并将结果存放在指定的寄存器中。 答案: ```assembly MOV AX, 第一个数 MOV BX, 第二个数 MUL BX ``` 三、挑战习题 1. 编写一个汇编程序,实现一个简单的计算器,支持加法、减法、乘法和除法运算。 答案: ```assembly READ_INPUT: ; 读取用户输入 ; ... PARSE_INPUT: ; 解析用户输入,获取操作数和运算符 ; ... CALCULATE: ; 根据运算符进行相应的计算 ; ...

汇编语言程序设计练习题及参考答案

一、单项选择题 从每小题的四个备选答案中,选出一个正确答案,并将正确答案的番号填人括号内。 1.用来存放下一条将要执行的指令地址的寄存器是 (B ) A.SP B.IP C.BP D.CS 2.要使串处理从低地址向高地址进行,应把标志位置为 (D ) A.IF=1 B.TF=0 C.DF=1 D.DF=0 3.使状态标志位CF清零的错误指令是 (C ) A.OR AX,AX B.SUB AX,AX C.MOV CF,0 D.CLC 4.设SP=1110H,执行PUSH AX指令后,SP的内容为 (B ) A.SP=1112H B.SP=110EH C.SP=1111H D.SP=110FH 5.汇编源程序出现语法错误的指令有 (D ) A.MOV [BX+SI],AL B. MOV AX,[BP+DI] C.MOV DS,AX D. MOV CS,AX 6.下列串操作指令中,必须同时指明源串和目的串地址的指令是 (D ) A.STOSW B.LODSW C.SCASW D.CMPSW 7.设BL中有一无符号数,实现把BL中的数乘以2,应选用的指令是 (B ) A.SHR BL,1 B.SHL BL,1 C.SAR BL,1 D.RCR BL,1 8.执行PUSH AX指令的正确步骤是 (A ) A.1.SP←SP-1,(SP)←AH B.1.(SP)←AH,SP←SP-1 2.SP←SP-1,(SP)←AL 2.(SP)←AL,SP←SP-1 C.1.SP←SP+1,(SP)←AH D.1.(SP)←AH,SP←SP+1 2.SP←SP+1,(SP)←AL 2.(SP)←AL,SP←SP+1 9.CF=1 时转移到目标地址的条件转移指令是 (B ) A.JNC B.JC C.JZ D.JS 10.在执行NEG指令时,对标志位CF有影响,其影响的规则是 ( C ) A.对正数求补时,CF=0 B.对负数求补时,CF=0 C.对非零数求补时,CF=1 D.对零求补时,CF=1 11.算术右移SAR和逻辑右移SHR两条指令执行后结果完全相同的情况是(A ) A.目的操作数最高位为0 B.目的操作数最高位为1 C.目的操作数为任意情况 D.无论什么情况都不可能相同 12.设AL=04H,BL=0F8H,执行IMUL BL指令后,结果是 ( D ) A.AX=0032H B.AX=00E0H C.AX=03E0H D.AX=0FFE0H 13.指令的操作数中,允许出现表达式,例如BUF1与BUF2均为变量名,下面指令中语法正确的是 (D ) A.MOV AX,BUFl*BUF2 B.MOV AX,BUF1/BUF2 C.MOV AX,BUF1+ES:BUF2

计算机组成原理与汇编语言程序设计课后习题及解答(详解)

计算机组成原理与汇编语言程序设计课后习题及解答 徐, 第1章习题一 1.什么是程序存储工作方式? 答:计算机的工作方式——存储程序工作方式。即事先编写程序,再由计算机把这些信息存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。 2.采用数字化方法表示信息有哪些优点? 用数字化方法表示信息的优点: (1)抗干扰能力强, 可靠性高。 (2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。 (3)数字化的信息可以存储、信息传送也比较容易实现。 (4)可表示的信息类型与范围及其广泛,几乎没有限制。 (5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成了计算机硬件设计的基础。 3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。 4.数字计算机的主要特点是什么? 1. (1)能在程序控制下自动连续地工作; (2|)运算速度快; (3)运算精度高; (4)具有很强的信息存储能力; (5)通用性强,应用领域及其广泛。 5.衡量计算机性能的基本指标有哪些? 答:衡量计算机性能的基本指标: (1)基本字长——参加一次运算的数的位数; (2)数据通路宽度——数据总线一次能并行传送的位数; (3)运算速度——可用①CPU的时钟频率与主频,②每秒平均执行指令数,③典型四则运算的时间来表示。 (4)主存储器容量——可用字节数或单元数(字数)×位数来表示。 (5)外存容量——常用字节数表示。 (6)配备的外围设备及其性能。 (7)系统软件配置。 7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。 系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。例如WINDOWS98操作系统,C语言编译程序等,数据库管理系统。 8.对源程序的处理有哪两种基本方式? 对源程序的处理通常有两种处理方式:解释方式和编译方式。 第2章习题二 1.将二进制数(101010.01)2 转换为十进制数及BCD码。 解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD 2.将八进制数(37.2)8转换为十进制数及BCD码. 解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD 3.将十六进制数(AC.E)转换为十进制数及BCD码. 解: (AC.E)16 =(172.875)10 = 0.1)BCD 4.将十进制数(7 5.34)10转换为8位二进制数及八进制数、十六进制数。

《汇编语言程序设计》期末复习题及答案

汇编语言程序设计》期末复习题及答案 一、选择( 30 题) 1.下列是 8 位带符号二进制数的补码,其中最大的是( B )。 B、00000001 2.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现 ( C ) C、占内存空间大,但速度快 3.数据定义为:EE DB 3 , 4 CC DW 3456H , 6789H 执行指令“ MOV CX WORD PTR EE+1'后,(CX = ( B ) B、5604H 4.有如下指令序列: MOV AL, 95H MOV CL, 2 SAR AL , CL 上述指令序列执行后,AL的内容是(D ) D、0E5H 5. 设A=186io, B=273s, C=0B^,把这三个数看成无符号数,则它们之间的关系是(D ) D、 A

A、ENDP 11 .用来存放下一条将要执行的指令代码段地址的段寄存器是( D ) D 、CS 12 .假定(SS) =1000H, (SP) =0100H, (AX)=5609H,执行指令 PUSH AX 后,存放数据56H 的物理地址是( D ) D、100FFH 13.执行“ SUB AX, [BP][DI] ”指令,取源操作数时,使用的物理地址表达式是( A ) A、16*SS+BP+DI 14 .设AX中有一带符号数 8520H,执行“ SAR AX, 1”指令后,AX中的值是(C ) C、0C290H 15 .设(BX =1234H,( DS =2000H, ( 21234H) =5678H,则指令“ LEA SI,[BX] ” 执行 后的结果是:( B ) B、SI=1234H 16 .测试BL中的数是否为负数,若为负数则转移至AA1处,横线处的指令应为( A ) A 、 JNE 17 .设 DF=Q (SI) =20H, (CX) =10,执行“ REP LODSW 指令后,SI 中的内容是(C ) C 、 34H 18.在程序执行过程中, IP 寄存器中始终保存的是( B ) B 、下一条指令的首地址 19 .设SP初值为2000H,执行指令“ POP AX'后,SP的值是(A ) A、2002H 20 .若 AX=3500H CX=56B8H 当 AND AX CX指令执行后, AX= ( A ) A、1400H 21 .汇编源程序时,出现语法错误的语句是( A ) A、MOV DS, 1200H 22 •将数据1234H存放在存储单元中的伪指令是( C ) C 、 DATA1 DB 34H, 12H 23 .下面指令执行后,可能改变AL寄存器内容的指令是( D ) D 、AND AL, BL

汇编语言程序设计练习题及答案

一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。) 1.为在一连续的存储单元中,依次存放数据41H,42H,43H,44H,45H,46H,可选用的数据定义语句是(D) A.DB 41,42,43,44,45,46 B.DW 4142H,4344H,4546H C.DW ‘AB’,‘CD’,‘EF’D.DW ‘BA’,‘DC’,‘FE’ 2.DA2 DB‘AB’,‘CD’ ┇ MOV AX,WORD PTR DA2+1 上述语句执行后AX中的值是(D) A.‘AD’B.‘BC’ C.‘DA’D.‘CB’ 3.下列数据定义语句中可实现留空20H个字节存储单元的是(D) A.DB 20 DUP(?) B.DW 20H DUP(?) C.DB 10H DUP(4 DUP(?)) D.DD 08H DUP(?) 4.如某存储器分段时,表示偏移地址是17位二进制代码,那么一个段最多的存储单元数是(D) A.32K字节B.32K字 C.64K字节D.64K字 5.下列寄存器中用来指示堆栈中任意数据区的偏移地址的是(B)A.BX B.BP C.SI D.DI 6.下列指令中有语法错误的是(C) A.PUSH AX B.PUSH [20H+SI+BX] C.POP CS D.PUSH CS 7.执行PUSH BP指令时,目的操作数的物理地址表达式是(D) A.16*SS+BP B.16*DS+BP C.16*CS+IP D.16*SS+SP 8.把BL中的数据输出到端口8CH中正确指令是(C) A.OUT 8CH,BL B.IN 8CH,BL C.MOV AL,BL D.MOV AL,BL OUT 8CH,AL IN 8CH,AL 9.结果为零的条件转移指令,其测试条件是(A) A.ZF=1 B.ZF=0 C.SF=l D.SF=0 10.下面程序段完成测试DA-BYTE字节单元中数是否为负数,若是则将全l送DH中,否则全0送DH中,那么程序段中方框里应填的语句是 MOV CH,0 MOV CH,0FFH ZERO:MOV DH,CH(C) A.JNZ ZERO B.JS ZERO

《汇编语言程序设计》必考试题及答案

《汇编语言程序设计》必考试题及答案 一、选择题 1. 汇编语言属于 ____。 A. 高级语言 B. 机器语言 C. 低级语言 D. 自然语言 答案:C. 低级语言 2. 在汇编语言中,寄存器eax主要用于 ____。 A. 存储返回值 B. 存储函数参数 C. 存储局部变量 D. 存储全局变量 答案:A. 存储返回值 3. 汇编语言中,jmp指令用于 ____。 A. 设置循环条件 B. 调用子程序

C. 跳转到指定地址 D. 返回主程序 答案:C. 跳转到指定地址 二、简答题 1. 请简述汇编语言与高级语言的区别。 汇编语言是一种低级语言,使用助记符来代表机器指令,每条汇编 指令对应一条机器指令。而高级语言更加抽象,采用更接近人类自然 语言的表达方式,通过编译器将高级语言编写的程序转换为机器语言。 2. 请列举汇编语言常用的寄存器及其作用。 汇编语言常用的寄存器包括: - eax:主要用于存储返回值。 - ebx、ecx、edx:通用寄存器,用于暂存计算结果。 - esi、edi:源操作数寄存器和目的操作数寄存器,用于存储数据传 输时的源地址和目的地址。 - ebp、esp:用于管理函数调用过程中的栈帧。 - eip:指令指针寄存器,存储下一条将要执行的机器指令的地址。 三、编程题

请编写汇编语言程序,实现从键盘输入两个数,并将其相加后输出的功能。 ```assembly section .data prompt db '请输入两个数,以空格分隔:', 0 result db '两数相加的结果为:%d', 0 section .bss num1 resb 4 num2 resb 4 section .text global _start _start: ; 输出提示信息 mov eax, 4 mov ebx, 1 mov ecx, prompt mov edx, 20 int 0x80 ; 输入第一个数

汇编语言程序设计习题-答案

4.1分析执行下列指令序列后的结果:1)MOVAX,1234H MOVBX,00FFH ANDAX,BX 【答】(AX)=0034H 2)MOVAL,0101B ANDAL,000111B;(AL)=000101B ORAL,11000B;(AL)=110101B XORAL,0011B;(AL)=11010B NOTAL 【答】(AL)=00101B 3)MOVDL,05H MOVAX,0A00H MOVDS,AX MOVSI,0H MOVCX,0FH AGAIN: INCSI CMP[SI],DL LOOPNE AGAIN HLT

本程序实现了什么功能? 【答】在以0A001H开始的15个单元中查找05H。 4)MOVAX,DSEGADDR MOVDS, AX MOVES,AX MOVSI, OFFSET B1ADDR MOVDI,OFFSET B2ADDR MOVCX,N CLD REPMOVSB HLT 本程序实现了什么功能? 【答】将B1ADDR中N个字节数据传送到B2ADDR开始的15个存储单元。5)MOVAX, 0H MOVDS,AX MOVES, AX MOVAL,05H MOVDI,0A000H MOVCX,0FH CLD AGAIN:

SCASB LOOPNEAGAIN HLT 本程序实现了什么功能? 【答】从地址0A000H开始的15个单元中查找字节型数据05H,用条件循环LOOPNZ,控制数据05H的查找。 4.2阅读程序: 1).CLD LEADI,[0100H] MOVCX, 0080H XORAX, AX REPSTOSW 本程序实现了什么功能? 【答】将DS中起始地址为0100H的128个字节单元清零。 2).MOVAL, 08H SAL,01H;(AL)=000100H MOVBL, AL MOVCL ,02H SAL,CL;(AL)=01000H ADDAL,BL;(AL)=0100H 本程序实现了什么功能?

汇编语言程序设计试题参考答案

汇编语言程序设计参考答案 A卷 一、单项选择题(本大题共8小题,每小题2分,共16分) 1.C 2.B 3.B 4.A 5.C 6.A 7.A 8.C 9.D 10.B 二、名词解释(本大题共5小题,每小题4分,共20分) 11.微处理器:也成中央处理器(CPU),是微型计算机的核心部件,包含运算器、控制器、寄存器组及总线接口等,负责对计算机系统各部件进行统一的协调和控制。 12.寻址方式:就是寻找操作数或操作数地址的方式,根据寻址方式可方便地访问各类操作数。 13.伪指令:是发送给汇编程序的命令,在汇编过程中由汇编程序进行处理,如定义数据、分配存储区、定义段及定义过程等。 14.中断源:指能引起中断的外部设备或内部原因。 15.汇编语言:是一种面向CPU指令系统的程序设计语言,采用指令助记符来表示操作码和操作数,用符号地址表示操作数地址。 三、简答题(本大题共4小题,每小题5分,共20分) 16.微型计算机系统软件的主要特点是什么? 计算机系统软件的主要特点是简化计算机操作,支持应用软件的运行并提供相关服务,通常包括操作系统、语言处理程序等。 17.什么是逻辑地址?他由哪两部分组成? 计算机存储器中给每个逻辑段编址的地址称逻辑地址。逻辑地址是在程序中使用的地址,他由段地址和偏移地址两部分构成。 18.一个完整的汇编源程序由那些逻辑段组成?各逻辑段的主要作用是什 么? 一般情况下汇编语言源程序应该由以下3个逻辑段组成: ①数据段:用来在内存中建立一个适当容量的工作区,以存放常数, 变量等程序需要对其进行操作的数据;

②堆栈段:用来在内存中建立一个适当容量的堆栈区,以便在中断、 子程序调用时使用; ③代码段:包括了许多以符号表示的指令,其内容就是程序需要执行 的具体操作。 19. DMA数据传送方式的特点是什么? DMA数据传送方式把外设与内存交换信息的操作与控制交给DMA控制器,简化了CPU对数据交换的控制,数据传送速度快,但这种方式电路结构复杂,硬件开销大。 20. 简述中断技术的优点。 ①CPU与外设可并行操作。 ②可对实时信息进行采集、处理和控制。 ③可对计算机出现的故障进行随机处理。 四、计算与分析(本大题共3小题,每小题5分,共15分) 21. 请将(158.625)10转为二进制。 结果:(10011110.101)2 22. 若一个程序段开始执行前,(CS)=33A0H,(IP)=0130H,则该程序段 启动执行指令的实际地址PA是多少? PA=(CS)×10H+(IP)=33A0H×10H+0130H=33B30H 23. 有两个16位的字31DAH和5E7FH,它们在8086系统存储器中的地址 分别为00130H和00134H,试画出它们的存储示意图。

汇编语言程序设计试卷

汇编语言程序设计试卷 一. (共75 题,共150 分) 1.下列说法错误的是。(2 分) A.机器指令的形式包含操作码和地址码 B.计算机只能够识别规定好的机器指令 C.不同计算机系统之间的机器指令能够相互兼容 D.汇编语言的主要操作和机器指令基本上一一对应 ★检查答案标准答案:C 2.两个有符号数相减,通过标志位判断结果是否溢出。(2 分) A.ZF B.CF C.SF D.OF ★检查答案标准答案:D (2 分) 3.汇编语言和高级语言的比较,下列说法错误的是 A.汇编语言和高级语言都不能被机器直接识别 B.完成同样的功能,汇编语言占据空间小 C.高级语言可以使用变量,但汇编语言不行 D.汇编语言中有类似于高级语言的宏功能 ★检查答案标准答案:C 4.下列寄存器中,哪个寄存器不能供汇编程序直接访问. (2 分) A.SP B.BP C.CS D.IP ★检查答案标准答案:D 5.下列寄存器,哪个不能作基址寄存器。(2 分) A.BX B.BP C.SI D.ESI ★检查答案标准答案:C 6.设有关寄存器及存储单元的内容如下:则指令MOV AX, 1100H[BX][SI] 执行完毕后,AX 寄存器中的值是 。(2 分) A.65B7H B.3412H C.4C2AH D.7856H ★检查答案标准答案:A

A.可以作立即寻址的操作数 B.也可作某些存贮器操作数的的位移量组成部分 C.在数据定义伪指令语句中给变量赋初值 D.可以作目的操作数 ★检查答案标准答案:D 8.若(ECX)=0ABCD1234H(BL)=0E3H,则语句MOVSX ECX,BL执行后:(ECX)的值为 。(2 分) A.0ABCD1234H B.0FFFFFFE3H C.000000E3H D.0ABCD12E3H ★检查答案标准答案:B (2 分) 9.若(AX)=0FFFDH ,则语句ADD AX,7FFFH 执行后,下列说法正确的是。 A.(AX) =7FFCH,(OF)=1 ,(CF)=1 B.(AX) =17FFCH ,(OF)=1 ,(CF)=1 C.(AX) =7FFCH,(OF)=0 ,(CF)=1 D.(AX)= 17FFCH ,(OF)=0 ,(CF)=1 ★检查答案标准答案:C 10.在语句INC SS:[BX] 中,操作数使用的段寄存器是。(2 分) A.DS B.ES C.CS D.SS ★检查答案标准答案:D 11.若(BX)= 0A2F4H,语句SAR BX, 2 执行后,(BX) = 。(2 分) A.0A2FH B.0E8BDH C.28DBH D.2F4AH ★检查答案标准答案:B 12.若(AX)=0FFFFH ,则指令XOR AX, 0AAAAH 执行后,(AX)= (2 分) A.0AAAAH B.5555H C.0FFFFH D.1111H ★检查答案标准答案:B 13.控制汇编程序应如何工作的约定符号称汇编控制命令,又称为。(2 分) A.条件跳转指令 B.机器指令 C.伪指令

汇编语言程序设计习题答案

第一章.习题 1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH (4) 32767=111 1111 1111 1111B=7FFFH 1.2将下列二进制数转换为十六进制数和十进制数: (1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111 答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128 (3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=255 1.3将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234 答:(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91 (3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=4660 1.4完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB× 6F 答:(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835 (3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=217893 1.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进 制数表示其运算结果。

汇编习题(含答案)

第一章基本知识 一、单项选择题 1.若十进制数为13 2.75,则其十六进制数为( B ) A.21.3 C.4.6 2.若[X]补=11111,则其十进制真值为(C ) 3.已知X=78,Y=-83则[X+Y]补=( C ) A.0F5H B.0A1H 4.已知[X]补=98H, 则[X]补/2=( A ) 二、填空题 1.(35)10 = (23)16。 2.(15)10 = (1111)2。 3. 计算机的存储容量1KB = (1024)Byte。 4. 计算机的存储容量1MB = (1024)KB。 5. 计算机的存储容量1GB = (1024)MB。 第二章8086计算机组织 一、单项选择题 1.在微机系统中分析并控制指令执行的部件是( C ) 2.在计算机的CPU中执行算术逻辑运算的部件是( A ) 3.能被计算机直接识别的语言是( C ) 4.8086/8088的存储器组织是将存储器划分为段,可作为段的起始地址的是( B )。A.185A2H B.01004H D. 0AB568H 5.堆栈中当前出栈的存储单元地址是( A ) A.SS*10H+SP B.SS*10H+BP C.SS*10+SP D.SS*10+BP 6.标志寄存器中属于控制标志位的是(B ) A.DF,OF,SF B.DF,IF,TF C.OF,CF,PF D. AF, OF, SF 7.8086/8088存储器分段,每个段不超过( D ) C. 1M个字节 D. 64K个字节

二、填空题 1. 假设某个字的值为1234H,其低位字节地址是20H,高位字节地址是21H,那么该字的地址是_______20H_____________。 2. 在8086/8088控制寄存器中,_______IP_________寄存器内容始终指向下一条指令的首地址,此时该指令物理地址计算式是_____CS*10H+IP__________________。 3. CPU的标志寄存器中标志位,可以分为两大类,其中一类成为___状态标志位________,另一类称为____控制标志位________标志位。 4. 当标志位___CF___=1时候表示无符号数运算产生溢出。而当标志位__OF______=1是表示带符号位数运算产生溢出。 1. 实模式下写出段地址和偏移地址为1234:2002、1430:0042、FF00:0FFF的物理地址。 答:物理地址=段地址*10H+偏移地址 (1)14342H (2)14342H (3)FFFFFH 2.从物理地址为00100H开始到00103H单元中顺序存放的数据为12H,34H,56H,78H。请画出数据存放示意图,并回答一下为题: (1)写出地址00101H字节单元的内容。 (2)写出地址00102字单元内容。 答: (1)(00101H)字节=34H (2)(00102H)字=7845H 第三章IBM PC机的寻址方式和指令系统 一、选择题 1.MOV AX,ES:[1000H] 源操作数的寻址方式是( B ) D.基址寻址 2.MOV AX,ES:COUNT[DI] 源操作数的寻址方式是( C ) D.基址变址寻址 3.MOV DX,COUNT[BP][DI]的源操作数的寻址方式是( D ) B.基址寻址 4.下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( B ) A.AX,BX,CX,DX B.BX,BP,SI,DI C.SP,IP,BP,DX D.CS,DS,ES,SS 5.下列四组寄存器中,属于通用寄存器的是( A ) A.AX,BX,CX,DX B.SP,BP,IP C.SI,DI,FLAGS

汇编语言程序设计习题解答

汇编语言程序设计习题解答 1.指出下列指令的错误: (1)MOV AH,BX (2)MOV [BX],[SI] (3)MOV AX,[SI][DI] (4)MOV MYDAT[BX][SI],ES:AX (5)MOV BYTE PTR[BX],1000 (6)MOV BX,OFFSET MYDAT[SI] (7)MOV CS,AX 答:(1)MOV AH,BX AH 为八位,BX为16位 (2)MOV [BX],[SI] 两个操作数不能都是存储单元 (3)MOV AX,[SI][DI] 一个操作数中不能用两个变址寄存器 (4)MOV MYDAT [BX][SI],E8:AX ES ES 后应为一个变址寄存器,表示偏移量 (5)MOV BYTE PTR[BX],1000 BYTE 说明时BX进行字节操作。而1000为字 (6)MOV BX,OFFSET MYDAT [SI] OFFSET 为取某个地址的偏移量,故后面不应用[SI],而应是一个符号地址。 (7)MOV 是数据寻址,不应用程序段寄存器CS. 2.下面哪些指令是非法的?(假设OPl,OP2是已经用DB定义的变量) (1)CMP l5,BX (2)CMP OPl,25 (3)CMP OPl,OP2 (4)CMP AX,OPl 答:(1) CMP 15,BX 非法,两个操作数不能一个为字,一个为字节 (2)CMP OP1,25 正确 (3)CMP OP1,OP2 正确 (4)CMP AX,OP1 非法,两操作数不能一个为字,一个为字节 3.假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错误是什么? (1)MOV BP,AL (2)MOV WORD_OP[BX+4*3][DI],SP (3)MOV WORD_OPl,WORD_OP2 (4)MOV AX,WORD_OPl[DX] (5)MOV SAVE_WORD,DS (6)MOV SP,SS:DATA_WORD[BX][SI] (7)MOV [BX][SI],2 (8)MOV AX,WORD_ OPl+WORD_OP2 (9)MOV AX,WORD_ OPl-WORD_OP2+100 (10)MOV WORD_ OPl,WORD_ OPl-WORD_OP2 答:(1)MOV BP,AL

微机原理与汇编语言程序设计课后习题参考答案

第一章习题与参考答案 1. 微处理器,微型计算机和微型计算机系统三者之间有何区别? 答:微处理器即CPU,它包括运算器、控制器、寄存器阵列和内部总线等部分,用于实现微型计算机的运算和控制功能,是微型计算机的核心;一台微型计算机由微处理器、内存储器、I/O接口电路以及总线构成;微型计算机系统则包括硬件系统和软件系统两大部分,其中硬件系统又包括微型计算机和外围设备;由此可见,微处理器是微型计算机的重要组成部分,而微型计算机系统又主要由微型计算机作为其硬件构成。 2. CPU在内部结构上由哪几部分构成?CPU应具备哪些主要功能? 答:CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。 3. 累加器和其它通用寄存器相比有何不同? 答:累加器是通用寄存器之一,但累加器和其它通用寄存器相比又有其独特之处。累加器除了可用做通用寄存器存放数据外,对某些操作,一般操作前累加器用于存放一个操作数,操作后,累加器用于存放结果。 4. 微型计算机的总线有哪几类?总线结构的特点是什么? 答:微型计算机的总线包括地址总线、数据总线和控制总线三类,总线结构的特点是结构简单、可靠性高、易于设计生产和维护,更主要的是便于扩充。 5. 举出10个微型计算机应用的例子。 答:略 6. 计算机I/O接口有何用途?试列出8个I/O接口。 答:计算机I/O接口是连接计算机和外部设备的纽带和桥梁,它主要用于协调和控制计算机与外设之间的信息流通和交换。例如:串行通讯口(COM口)、并行打印机口、软盘驱动器接口、硬盘驱动器接口、光驱接口、显示器接口、音响设备接口、其它通用设备接口(USB、SCSI等)。 7. 现在,计算机主板上一般都包括哪些I/O接口?I/O接口卡如何与主板相连? 答:现在,计算机主板上一般包括串行通讯口、并行打印口、软盘驱动器接口、硬盘驱动器接口、光驱接口、USB接口等。象显示器适配器、网卡、modem卡等I/O接口卡一般通过总线插槽与主板相连。 8. 简述系统总线,AGP总线,PCI总线及ISA总线的作用。 答:系统总线是CPU与存储器及桥接器之间传递信息的通道,AGP总线专门用与连接CPU与显示器适配器,PCI总线一般用于连接一些高速外设接口作为高速外设与CPU或内存交换信息的通道,而ISA总线一般用于连接一些非高速外设接口作为非高速外设与CPU或内存交换信息的通道。 9. 试说明计算机用户,计算机软件,计算机硬件三者的相互关系。 答:计算机用户,计算机软件系统,计算机硬件系统共同构成一个计算机应用系统,三者在该系统中处于三个不同的层次。计算机用户处于最高层,计算机软件处于中间层,计算机硬件系统处于最下层。在这里计算机用户是系统的主宰,他们通过软件系统与硬件系统发生关系,指挥计算机硬件完成指定的任务。即,计算机用户使用程序设计语言编制应用程序,在系统软件的干预下使用硬件系统进行工作。 10. 简述DOS操作系统各部分的作用及相互关系。 答:DOS操作系统包括3个模块:DOS-Shell(https://www.wendangku.net/doc/d019163234.html,)、DOS-Kernel(https://www.wendangku.net/doc/d019163234.html,)、DOS-BIOS(https://www.wendangku.net/doc/d019163234.html,). DOS-Shell模块对用户输入的DOS命令行或应用程序行作出响应。即负责DOS命令的解释和

相关文档
相关文档 最新文档