走近信息安全:逆向工程汇编基础(青岛工学院)智慧树知到网课章节测试答案

第一章测试
1.下面关于软件逆向工程的描述错误的是( )。
A:通过软件逆向能够加深对高级语言实现机制的了解
B:软件逆向工程会运用到解密、反汇编、系统分析、程序理解等计算机技术
C:软件逆向工程能够提高软件生产的效率和质量
D:通过逆向工程获得的信息可以任意扩散给其他人
答案:D
2.下面属于软件逆向工程的应用的是( )。
A:病毒分析
B:漏洞分析
C:软件开发
D:软件破解
答案:ABCD
3. 软件逆向工程技术的有效运用可以更好的研究和学习先进的软件技术。( )
A:对
B:错
答案:A
4. 逆向工程人员为合法用户。( )
A:对
B:错
答案:A
5. 逆向工程技术可以用于开发形式类似或有其他著作权侵权因素的程序。( )
A:对
B:错
答案:B

第二章测试
1.下面关于汇编语言的描述错误的是( )。
A:汇编指令是机器指令的助记符
B:伪指令是汇编语言的核心,可以编译为机器指令
C:汇编指令需要编译器将之编译为机器指令
D:每一种CPU都有自己的汇编指令集
答案:B
2.在存储器中,数据和程序以( )形式存放。
A:二进制
B:汇编指令
C:字符
D:十进制
答案:A
3.1KB的存储器有( )个存储单元。
A:8000
B:1024
C:512
D:10
答案:B
4.一个存储器有128个存储单元,则存储单元的编号是( )。
A:1~128
B:0~127
C:其他
D:0~128
答案:B
5.用汇编语言编写的汇编程序可以被计算机直接识别和执行。( )
A:错
B:对
答案:A
6.CPU访问内存中的数据,首先要确定存储单元的地址。( )
A:对
B:错
答案:A

第三章测试
1. 下列关于8086CPU的工作原理的描述错误的是( )。
A:汇编程序员可以通过改变寄存器中的内容实现对CPU的控制。
B:CPU在访问内存时,采用“段地址*16+偏移地址”的形式给出要访问的内存单元的物理地址。
C:任意时刻,CS:IP指向的内容即是此刻CPU正在执行的指令。
D:mov指令不能用于设置CS、IP的值。
答案:C
2. 在8086CPU中,下面寄存器是16位的包括( )。
A:DX
B:AH
C:CS
D:IP
答案:ACD
3. 在8086PC机中,数据存在内存2000:3E80单元中,该数据的内存地址为( )。
A:5E80H
B:2000H
C:3E80H
D:23E80H
答案:D
4. 下面哪个是错误的指令( )。
A:mov cs, 123
B:add al, dl
C:mov ax, bx
D:mov al, 0f5H
答案:A
5. mov ax, 936aHmov bx, 79b8Hadd ax, bx指令执行后AX中的数据是( )
A:1c22H
B:0d22H
C:0c22H
D:1d22H
答案:B
6. mov ax, 936aHmov bx, 79b8Hadd al, bl指令执行后AX中的数据是( )
A:9422H
B:9322H
C:1c22H
D:0d22H
答案:B
7. 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为( )。
A:10001H~1000FH
B:00001H~10000H
C:00010H~1000FH
D:00000H~00010H
答案:C
8. mov ax, bxsub ax, axjmp ax上面程序段起始IP的值为0000H,3条指令执行后,CPU修改IP( )次。
A:5
B:3
C:2
D:4
答案:D
9. 8086PC机中存储器的一个段最大为 16K 个字节。( )
A:错
B:对
答案:A
10.汇编指令“MOV CX, AL”是一条合法指令。( )
A:错
B:对
答案:A

第四章测试
1.用Debug查看内存,结果如下:0000:0010 62 26 E6 D6 CC 2E 3C 3B……有程序段如下:mov ax,1mov ds,axmov ax,[0002]上面3条指令执行后,寄存器AX中的内容为( )。
A:E6D6H
B:6226H
C:2662H
D:D6E6H
答案:D
2.用Debug查看内存,结果如下:0000:0010 62 26 E6 D6 CC 2E 3C 3B……有程序段如下:mov ax,1mov ds,axmov al,[0002]上面3条指令执行后,寄存器AL中的内容为( )。
A:D6E6H
B:62H
C:E6H
D:26H
答案:C
3.用Debug查看内存,结果如下:0000:0010 62 26 E6 D6 CC 2E 3C 3B……有程序段如下:mov ax,1mov ds,axadd ax,[0002]上面3条指令执行后,寄存器AX中的内容为( )。
A:D6E7H
B:D6E6H
C:E6D7H
D:E627H
答案:A
4.用Debug查看内存,结果如下:0000:0010 62 26 E6 D6 CC 2E 3C 3B……有程序段如下:mov ax,1mov ds,axmov [0],ax上面3条指令执行后,内存地址00010H对应内存单元中的字型数据为( )。
A:2662H
B:0001H
C:2601H
D:0100H
答案:B
5.下面名称中( )代表堆栈指针寄存器。
A:SP
B:BP
C:SS
D:ES
答案:A
6.设 SP 初值为 200H,执行指令 PUSH AX 后,SP 的值是( )。
A:1FEH
B:1FFH
C:198H
D:202H
答案:A
7.汇编语言访问内存的指令都是以字为单位进行的。 ( )
A:错
B:对
答案:A
8.8086PC机中堆栈的入栈和出栈操作都是以字为单位进行的。 ( )
A:对
B:错
答案:A
9.汇编指令“PUSH DS”是一条合法指令。 ( )
A:错
B:对
答案:B
10.汇编指令“POP AL”是一条合法指令。 ( )
A:对
B:错
答案:B

第五章测试
1.汇编程序中( )有对应的机器码,可以被编译为机器指令。
A:伪指令
B:汇编指令
C:标号
D:注释符
答案:B
2.段结束的伪指令是( )。
A:int
B:end
C:ends
D:segment
答案:C
3.进入DOS方式,对源程序进行编译的命令是( )。
A:debug
B:link
C:masm
D:t
答案:C
4.在debug中单步执行程序中的指令的命令是( )。
A:r
B:t
C:d
D:u
答案:B
5.使用debug跟踪调试汇编程序时,执行最后的返回指令,要使用( )命令执行“int 21h”,程序可以正常结束。
A:r
B:p
C:u
D:t
答案:B
6.伪指令是有对应的机器码的指令,可以被编译为机器指令由CPU执行。( )
A:对
B:错
答案:B
7.汇编程序使用assume伪指令将段与相关段寄存器关联起来。( )
A:错
B:对
答案:B
8.编译器在编译汇编程序的过程中,如果碰到了伪指令end,就结束对源程序的编译。( )
A:错
B:对
答案:B
9.在debug中查看改变寄存器内容的命令是r。( )
A:错
B:对
答案:B

第六章测试
1.[bx]的偏移地址在bx中,段地址默认在( )中。
A:ES
B:DS
C:CS
D:SS
答案:B
2.mov [6],ax的描述正确的是( ) 。
A:(ax)=((ds)*16+6)
B:((ds)*16+6)=(ax)
C:(ax)=6
D:(6)=ax
答案:B
3.通常用loop指令来实现循环功能,寄存器( )存放循环次数。
A:AX
B:DX
C:CX
D:BX
答案:C
4.用Debug查看内存,结果如下:2100:0000 03 2E 76 D6 39 2E……有程序段如下:mov ax,2000Hmov ds,axmov bx,1000Hmov ax,[bx]上面4条指令执行后,寄存器AX中的内容为( )。
A:032EH
B:2E03H
C:1000H
D:2E76H
答案:B
5.用Debug查看内存,结果如下:2100:0000 03 2E 76 D6 39 2E……有程序段如下:mov ax,2100Hmov ds,axmov bx,4mov al,[bx]上面4条指令执行后,寄存器AX中的内容为( )。
A:2139H
B:0004H
C:2E39H
D:2100H
答案:A
6.在debug中不再一步步跟踪循环程序,希望一次执行完CS:0012前的指令,则可以使用( )命令实现。
A:q
B:g
C:p
D:t
答案:B
7.用Debug查看内存,结果如下:2100:0000 03 2E 76 D6 39 2E……有程序段如下:mov ax,2100Hmov es,axmov bx,2mov ax,es:[bx]上面4条指令执行后,寄存器AX中的内容为( )。
A:2102H
B:762EH
C:76D6H
D:D676H
答案:D
8.汇编指令“MOV [BX],AL”是一条合法指令。( )
A:错
B:对
答案:B
9.mov ax,[bx]可以描述为((ds) *16 +(bx)) = (ax)。( )
A:错
B:对
答案:A

第七章测试
1.观察下面的程序,回答问题。assume cs:codesgcodesg segmentdw 0123h,0456h,0789hstart: mov bx,0mov ax, cs:[bx]mov ax, 4c00hint 21hcodesg endsend start关于程序的描述正确的是( )。
A:程序在代码段中使用数据,可以正常执行
B:程序中有错误,dw定义的数据不能放在代码段codesg中
C:去掉end后面的start,程序仍然能够正常执行
D:去掉代码段后面的两条指令“mov ax, 4c00h int 21h“,程序仍然能够正常执行
答案:A
2.观察下面的程序,回答问题。assume cs:codesgcodesg segmentdw 0123h,0456h,0789hstart: mov bx,2mov ax, cs:[bx]mov ax, 4c00hint 21hcodesg endsend start程序中执行指令“mov ax, cs:[bx]“之后,ax寄存器的内容是( )。
A:0456h
B:0789h
C:2304h
D:0123h
答案:A
3.观察下面的程序,回答问题。assume cs:code,ds:data,ss:stackdata segmentdw 0123H,0456H,0789Hdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stackmov ss,ax……mov ax,4c00hint 21hcode endsend start程序加载后,data数据段实际占有的空间为( )字节。
A:2
B:3
C:16
D:6
答案:C
4.观察下面的程序,回答问题。assume cs:code,ds:data,ss:stackdata segmentdw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987Hdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stackmov ss,ax……mov ax,4c00hint 21hcode endsend start在代码段中对栈段进行初始化,sp的初始化指令是( )。
A:mov sp,0
B:mov sp,2
C:mov sp,20h
D:mov sp,10h
答案:D
5.观察下面的程序,回答问题。assume cs:code,ds:data,ss:stackdata segmentdw 0123H,0456H,0789Hdata endsstack segmentdw 0,0,0stack endscode segmentstart: mov ax,stackmov ss,ax……mov ax,4c00hint 21hcode endsend start设程序加载后,code段的段地址为073FH,则data段的段地址为( )。
A:073DH
B:073FH
C:073EH
D:0740H
答案:A
6.观察下面的程序,回答问题。assume cs:code,ds:a,ss:ba segmentdw 0ah,0bh,0ch,0dh,0eh,0fha endsb segmentdw 0,0,0,0,0,0,0,0b endscode segmentstart:mov ax,amov ds,axmov ax,bmov ss,ax mov sp,16mov bx,0mov cx,6s: push [bx]add bx,2loop smov ax,4c00hint 21code endsend start关于该程序的描述,不正确的是( )。
A:程序能够将a段的数据按顺序复制到b段
B:程序包含多个段,b是栈段
C:程序能够将a段的数据逆序复制到b段
D:程序包含多个段,code是代码段
答案:A
7.在8086机中,如果数据、栈和代码需要的空间不超过64KB,则可以将数据和栈放在代码段中。 ( )
A:错
B:对
答案:B
8.汇编程序最后一条伪指令“end start”,通知编译器程序的入口在start标号处。 ( )
A:对
B:错
答案:A
9.汇编程序中可以将数据、代码、栈放入不同的段中,实现包含多个段的程序。( )
A:错
B:对
答案:B
10.汇编程序中,不能将栈放在代码段中,必须以栈段的形式单独使用。( )
A:对
B:错
答案:B

第八章测试
1.用Debug查看内存,结果如下:2000:1000 3C 0A 05 30 2E 00 ……阅读下面程序段,回答问题。mov ax,2000Hmov ds,axmov bx,1000Hmov ax,2[bx]上面4条指令执行后,寄存器AX中的内容为( )。
A:0530H
B:3C0AH
C:3005H
D:0A3CH
答案:C
2.用Debug查看内存,结果如下:2000:1000 3C 0A 05 30 2E 00 ……阅读下面程序段,回答问题。mov ax,2000Hmov ds,axmov si,1000Hmov ax,3[si]上面4条指令执行后,寄存器AX中的内容为( )。
A:302EH
B:0530H
C:3005H
D:2E30H
答案:D
3.用Debug查看内存,结果如下:2000:1000 3C 0A 05 30 2E 00 ……阅读下面程序段,回答问题。mov ax,2000Hmov ds,axmov bx,1000Hmov si,2mov ax,2[bx][si]上面5条指令执行后,寄存器AX中的内容为( )。
A:302EH
B:2E00H
C:002EH
D:2E30H
答案:C
4.下列指令不合理的是( )。
A:mov ds:[0ffh],al
B:push ds:[0ffh]
C:mov ds:[0ffh],ax
D:mov ds:[0ffh],0ffh
答案:D
5.指令 DIV BX 的余数放于( )寄存器中。
A:DX
B:AX
C:AL
D:AH
答案:A
6.已知 BX=2000H,DI=1000H,则指令MOV AX,[BX].6[DI]的源操作数在( )中。
A:数据段中偏移量为 3006H 的字节
B:数据段中偏移量为 2006H 的字节
C:数据段中偏移量为 3000H 的字节
D:附加段中偏移量为 3000H 的字节
答案:A
7.指令mov ax,[si][di]是正确的指令。 ( )
A:对
B:错
答案:B
8.指令mov ax,3[bp][di]是正确的指令。 ( )
A:对
B:错
答案:A
9.指令MOV BYTE PTR [BX],300是正确的指令。( )
A:错
B:对
答案:A

第九章测试
1.阅读下面的程序段,回答问题。MOV BX, 0100HMOV SI, 0200HLEA SI, [BX+SI+20H]以上3条指令执行后,SI寄存器的内容是( )。
A:0320H
B:0120H
C:0100H
D:0300H
答案:A
2.下面关于汇编指令“mov ax,offset start”描述正确的是( )。
A:指令执行后ax寄存器的内容为0
B:操作符offset的功能是取得标号start的偏移地址
C:操作符offset的功能是取得标号start的段地址
D:指令执行后ax寄存器的内容为随机值
答案:B
3.阅读下面的程序段,回答问题。mov cx,0jcxz sinc cxs: add cx,6以上程序执行后,寄存器cx的内容是( )。
A:0
B:6
C:7
D:1
答案:B
4.阅读下面的汇编程序段,回答问题。start: jmp short sdb 256 dup(0)s: mov ax,0ffffH关于该程序描述正确的是( )。
A:s标号距离start标号间隔256字节
B:jmp指令实现短转移,跳转到标号s处执行指令
C:程序执行后ax寄存器的内容为ffffH
D:程序将引起编译错误
答案:D
5.阅读下面的程序段,回答问题。mov bx,0106Hmov ax,1000Hmov [bx],axjmp word ptr [bx]以上指令执行后,IP寄存器的内容是( )。
A:0106H
B:1106H
C:1000H
D:0000H
答案:C
6.用Debug查看内存,结果如下:2000:1000 BE 01 06 00 00 00 ……则此时,CPU执行指令:mov ax,2000Hmov es,axjmp dword ptr es:[1000H]以上指令执行后,cs寄存器的内容是( )。
A:01BEH
B:0600H
C:0006H
D:BE01H
答案:C
7.用Debug查看内存,结果如下:2000:1000 BE 01 06 00 00 00 ……则此时,CPU执行指令:mov ax,2000Hmov es,axjmp dword ptr es:[1000H]以上3条指令执行后,IP寄存器的内容是( )。
A:BE01H
B:0600H
C:01BEH
D:0006H
答案:C
8.指令“lea bx, str1“与指令”mov bx, offset str1”执行后,bx的内容一致。( )
A:对
B:错
答案:A
9.指令“jmp far ptr 标号”实现的是段间转移,用标号的段地址和偏移地址修改CS和IP。 ( )
A:错
B:对
答案:B
10.指令“jmp word ptr ds:[0]”实现的是段间转移,用内存数据修改CS和IP。 ( )
A:错
B:对
答案:A

第十章测试
1.下列( )是溢出标志位。
A:SF
B:AF
C:CF
D:OF
答案:D
2.标志位 SF=1 时,表示运算结果( )。
A:<0
B:=0
C:=1
D:>0
答案:A
3.已知(al)=80h,执行指令“add al,80H”之后,下面标志位的值正确的是( )。
A:SF=1
B:ZF=1
C:PF=0
D:CF=0
答案:B
4.指令sbb ax,bx是一条( )指令。
A:ax加bx
B:带借位的减法
C:交换
D:ax减bx
答案:B
5.已知(CX)=1234H,执行指令“CMP CX , 34H”之后,CX寄存器的内容是( )。
A:1200H
B:0000H
C:1234H
D:1268H
答案:C
6.已知(CX)=1234H,执行指令“CMP CX , 34H”之后,下面标志位的值正确的是( )。
A:CF=0
B:SF=1
C:OF=1
D:ZF=1
答案:A
7.已知(ah)=26H,(bh)=37H,阅读下面程序段,回答问题。cmp ah,bhje sadd ah,bhjmp short oks: add ah,ahok: ret执行下面程序段后,寄存器ah的内容是( )。
A:4CH
B:37H
C:5DH
D:26H
答案:C
8.阅读下面程序,回答问题。assume cs:code,ds:datadata segmentdb 10,11,9,6,8,5,30,38data endscode segmentstart: mov ax,datamov ds,axmov bx,0mov ax,0mov cx,8s: cmp byte ptr [bx],9jna nextinc axnext: inc bxloop smov ax,4c00hint 21hcode endsend start关于上面程序描述正确的是( )。
A:该程序统计data段中数值不大于9的字节的个数
B:程序返回前,ax寄存器的内容是5
C:jna根据比较结果大于则转移
D:程序返回前,ax寄存器的内容是4
答案:D
9.执行指令“sub al,al”之后,标志位ZF的值为0。( )
A:错
B:对
答案:A
10.汇编指令jne根据比较结果不相等则转移。( )
A:错
B:对
答案:B

第十一章测试
1.阅读下面程序段,回答问题。mov sp,12hmov ax,5678hmov ds:[0],axcall word ptr ds:[0]以上call指令执行后,IP寄存器的内容是( )。
A:5678H
B:0010H
C:0012H
D:0000H
答案:A
2.阅读下面程序段,回答问题。mov sp,12hmov ax,5678hmov ds:[0],axcall word ptr ds:[0]以上call指令执行后,SP寄存器的内容是( )。
A:0010H
B:0012H
C:5678H
D:0000H
答案:A
3.阅读下面程序,回答问题。assume cs:codecode segmentstart: mov ax,6mov cx,2call smov bx,axmov ax,4c00hint 21hs: add ax,axloop sretcode endsend start程序返回前,寄存器bx的内容是( )。
A:12
B:6
C:24
D:48
答案:C
4.指令“mul bl”执行后,乘积在( )里。
A:AL
B:BL
C:AX
D:DX和AX
答案:C
5.指令“mul bx”实现的功能是( )。
A:(dx)乘以(bx)
B:(ax)乘以(bx)
C:(ax)除以(bx)
D:(al)乘以(bx)
答案:B
6.call指令不能实现短转移。( )
A:对
B:错
答案:A
7.在模块化程序设计时,子程序和主程序可以使用寄存器传递参数。 ( )
A:对
B:错
答案:A
8.执行指令“call s”时,先将当前的CS和IP都压栈,然后转到标号处执行指令。 ( )
A:错
B:对
答案:A
9.为解决子程序和主程序的寄存器冲突问题,在子程序的开始将用到的寄存器用栈都保存起来,在子程序返回前再恢复。 ( )
A:对
B:错
答案:A
10.执行ret指令,会将IP寄存器的内容压栈。 ( )
A:对
B:错
答案:B

第十二章测试
1.使用debug查看内存FFFF0H~FFFFFH的内容,可以使用命令( )。
A:r ffff:0 f
B:t ffff:0 f
C:a ffff:0 f
D:d ffff:0 f
答案:D
2.下面对指令mov [bx],bl描述正确的是( )。
A:((ds) *16 +(bx)) = (bl)
B:(bl)= ((ds) *16 +(bx))
C:(bl)= ((es) *16 +(bx))
D:((es) *16 +(bx)) = (bl)
答案:A
3.下面对指令push [bx]描述正确的是( )。
A:将内存地址为(ds) *16 +(bx)的字数据压栈
B:数据出栈送bx
C:将bx的内容压栈
D:数据出栈送内存地址为(ds) *16 +(bx)的字单元
答案:A
4.在debug中键入a 2000:0可以将汇编指令写入2000:0开始的内存单元中。( )
A:对
B:错
答案:A
5.指令mov bx,[6]实现将ds段6号地址的字数据送bx寄存器。( )
A:对
B:错
答案:A
6.可以使用d ds:0查看PSP的内容。( )
A:错
B:对
答案:B