汇编程序设计MOOC精选题

一、微型计算机基础

1.微型计算机各部件之间是用(系统总线)连接起来的
2.冯诺依曼结构确定计算机的五个基本部件:i/o,存储器、控制器和(运算器)
微处理器通过(数据)总线 向存储器和io接口电路传输数据信号。
背上、(数据总线发信号)
3.计算机执行一条指令,(取操作数)不是必须的一个步骤
4.
在这里插入图片描述
千万别选成了ASCII码
4.
在这里插入图片描述
这题注意在将A5转化为二进制代码之后,发现最高位的数字是1,既然是求真值了,建议是此刻就将负号写上去,然后对剩下的7位进行转换即可。(防止忘了)
5.
在这里插入图片描述
这题设计到一个问题(本质上就是求80H的补码即可得到真值),ques:由真值得到反码之后+1得到1111 1111 + 1,如何处理???Ans见下:
在这里插入图片描述
所以本题就是得到 1(1000 0000),即符号位扩上去(原来符号位的位置的1仍然不变)—>相当于多一个1出来,最高位(进出来的)为此刻的符号位所以是负数,数值部分为2^7=128,综上所述:答案为-128

二、80X86微处理器

1、 问题:在一般的微处理器中,( )包含在CPU中。
选项:
A:内存
B:输入/输出端口
C:磁盘驱动器
D:算术逻辑单元
答案: 【算术逻辑单元 】
2、 问题:所谓微机的字长是指( )。 
选项:
A:CPU内部数据总线的位数
B:CPU外部数据总线的位数
C:CPU地址总线的位数
D:CPU中运算器一次能处理二进制数的最大位数
答案: 【CPU中运算器一次能处理二进制数的最大位数】
3、 问题:80486CPU进行算术和逻辑运算时,可处理的信息的长度为( )。
选项:
A:32位
B:16位
C:8位
D:都可以
答案: 【都可以】
4、 问题:在下面关于微处理器的叙述中,错误的是( ) 。
选项:
A:微处理器是用超大规模集成电路制成的具有运算和控制功能的芯片
B:一台计算机的内部只含有1个处理器
C:CPU内部的寄存器由具有特殊用途的存储单元组成,是存储器系统的一部分
D:不同型号的CPU可能具有不同的机器指令
答案: 【一台计算机的内部只含有1个处理器】
5、 问题:若某台微型计算机的型号是奔四800,则其中800的含义是( )。
选项:
A:CPU中有800个寄存器
B:CPU中有800个运算器
C:时钟频率为800MHZ
D:该微机的内存为800MB
答案: 【时钟频率为800MHZ】
6、 问题:程序设计中所使用的地址是( )。
选项:
A:逻辑地址
B:有效地址
C:物理地址
D:段基址
答案: 【逻辑地址】
7、 问题:控制器的功能是( )。
选项:
A:产生时序信号
B:从主存取出指令并完成指令操作码译码
C:从主存取出指令、分析指令并产生有关的操作控制信号
D:完成算术和逻辑运算
答案: 【从主存取出指令、分析指令并产生有关的操作控制信号
8、 问题:运算器的主要功能是( ) 。
选项:
A:算术运算
B:算术运算与逻辑运算
C:逻辑运算
D:函数运算
答案: 【算术运算与逻辑运算】
9、 问题:编程人员不能随意读写的寄存器是( )。
选项:
A:DI
B:CX
C:IP
D:SP
答案: 【IP】
10、 问题:80X86微处理器中的 BX是( )。
选项:
A:基址寄存器
B:计数寄存器
C:变址寄存器
D:基数寄存器
答案: 【基址寄存器 】

15、 问题:486工作在实地址模式下时,能访问的物理内存空间是( )
选项:
A:1M
B:16M
C:20M
D:64K
答案: 【1M】
20、 问题:80486的数据总线都是16位。
选项:
A:正确
B:错误
答案: 【错误】
在这里插入图片描述

21、 问题:SP做堆栈指针时,其内容必须指向堆栈栈顶。
选项:
A:正确
B:错误
答案: 【正确】
22、 问题:字长是描述CPU数据总线宽度的指标。
选项:
A:正确
B:错误
答案: 【错误】
解释:字长描述CPU能够一次处理的二进制数字的位数。数据总线宽度是描述CPU与内存或其他设备之间传输数据的宽度。虽然字长和数据总线宽度可能相关,但它们并不是完全相同的概念。
25、 问题:在80486的32位标志寄存器中,其每一位都有一定的含义。
选项:
A:正确
B:错误
答案: 【错误】
分析;【32位长度的标志寄存器中,有定义的是若干位,不是全部位都有定义。】
26、 问题:微机的字长愈长,计算精度愈高,指令处理功能愈强。
选项:
A:正确
B:错误
答案: 【正确】

30、 问题:16位微处理器的内部结总线接口单元BIU由段寄存器(CS、DS、SS、ES)、指令指针寄存器(IP)、内部暂存器、指令队列、地址加法器及总线控制电路组成。
选项:
A:正确
B:错误
答案: 【正确】

31、 问题:80X86工作在实模式下时,每个物理存储单元对应唯一的物理地址,其范围是0 ~ ( )H。
答案: 【FFFFF】
32、 问题:指令指针用IP表示,其中存放的是CPU所要访问的内存单元的( )
答案: 【偏移地址;有效地址】
33、 问题:8086CPU具有20条地址线,可直接寻址( )B容量的内存空间。
答案: 【1M;1兆;1024K】
34、 问题:32位微处理器有两个独立的物理空间,一个是存储空间,另一个是( )空间。
答案: 【I/O;输入输出;IO;输入/输出】
38、 问题:80X86微处理器的16位寄存器中,被称作累加器的是( )寄存器。(书写该寄存器的汇编助记符)
答案: 【AX;ax】
39、 问题:80486处理器内部的标志寄存器FLAG,为系统提供( )个控制标志。
答案: 【3;三】

40、 问题:实地址模式下,80486处理器内部的寄存器SS在访问内存时用来提供( )段的段基址。
答案: 【堆栈】

三、汇编语言指令集(一)

1.符号指令和机器指令是一对一的关系(在汇编语言源程序中,符号指令汇编时汇编为机器指令)
2.8086的标志寄存器FLAG中定义的状态标志有6个,控制表示有3个
3.汇编语言程序中的标号代表指令地址
4.标志位SF表示运算结果的最高位是否为1
5.实模式下,CPU要执行的下一条指令的逻辑地址分别在CS:IP寄存器中。
6.
在这里插入图片描述
7.有关标志寄存器的六个状态位:
①AF:(最低的)半个字节进位标志
②PF:(最低的)一个字节中“1”的个数是否为偶数个在这里插入图片描述
注:这边结果的最后一个字节是0个1,也算作是偶数个1
8.Q:默认段寄存器怎么确定的,bp默认是堆栈,si默认是数据该听谁的,看答案好像是以基址寻址的那个默认段寄存器为准。
ANS: B
在这里插入图片描述

四、汇编语言指令集(二)

1.指令错误专题:
①应该是基址+变址,而这个图片是变址+变址
在这里插入图片描述
②这个如果没有段前缀,那么就是“寄存器间接寻址”。这边加上DS前缀,那么肯定是基址/变址/基址+变址寻址。那么使用的寄存器就不会包含(AX),常见的有BP BX DI SI
在这里插入图片描述
③本题A、C选项原因同上,B错在:寄存器间接寻址没有DX,只有BP BX DI SI等
在这里插入图片描述
这个第二个是相同的原因。DX不能用作间址寄存器。
在这里插入图片描述
这个也是同理。
在这里插入图片描述

③两个错误注意:
在这里插入图片描述
④A两者类型不一,B中lea指令源操作数只能是内存操作数,C对,D:PUSH的进出栈的数据规定位数必须是16位or32位。(其次要注意的是:push和pop是针对堆栈寄存器而言的,如push ax是将ax的内容push到堆栈寄存器中)
在这里插入图片描述

2.无符号乘法
在这里插入图片描述
3.堆栈的定义:
在这里插入图片描述
4.用EQU语句是不会占用内存空间的。
在这里插入图片描述
5.细心
在这里插入图片描述
6.脑筋急转弯(doge):[ ] 中的是偏移地址, lea求的是偏移地址。这两者是相等的。
在这里插入图片描述
在这里插入图片描述
7.①注意变量TABLE定义方式是用WORD定义的,所以如果不用ptr转化的话,默认取的时候必须取两个byte;其次取两个字节也是和AX相对应。②注:变量名用DW定义的话,一个数据是要占到2个byte的位置的,以tabel+6中的40为例,其存进内存中是28H(低位),00(高位)。③针对本题,table+3会索引到00,但是要取两个字节:所以ans:1e00H
数据的存储方式
在这里插入图片描述
8.①-1的一个字节的补码是FFH,按照一个字存的时候,高位扩充的是1,所以是FF
② W3单元的内容是’3’字符对应的ASCII码为33H
在这里插入图片描述9.错因:200H - 十进制的4当成了196.。。。。。。
在这里插入图片描述

五、汇编语言指令集(三)

1.REPE是匹配相等则往下走;REPNE是不匹配则往下走(同时会修改CX和SI\DI指针的值)
在这里插入图片描述
2.非法格式的指令的条数:
思考方向:

  • ptr
  • MOV两个操作数是①均在内存中的操作数 ②均为段寄存器 ③立即数直接传送到段寄存器
    在这里插入图片描述
    本题第二条就是两个内存操作数(容易忘记。。。),第三个MUL应该是寄存器操作数or内存操作数才行。第四条,移位操作+操作数(寄存器or内存操作数)+移位次数**(只能是CL中的)**
    3.符号指令与机器指令是一一对应的(大标题四下的)
    在这里插入图片描述
    4.答案:
    ①ADD SI,2 # 一定注意是按照word定义的,所以+2
    ②JMP LOP # 确定了是最大值,就一定不用判断是最小值了,直接跳走
    ③LOOP COMPA
 下面程序段的功能是在一组数据中,找出最大数和最小数(有符号数),并分别存入MAX和MIN单元中。请在程序中各横线上填入适当的指令语句。(注:(1)不能有多余的空格,例:操作码和操作数之间空格只有一位;操作数和操作数之间用半角逗号隔开,不能有空格。(2)字符全部大写,并且为半角字符。(3)指令与和指令之间用一个半角空格分开。)‍
.486‍
   DATA    SEGMENT  USE16‍
   BUF     DW   500, -600,67,433,-1‍
   CN      DW   ($-BUF)/2‍   # 由于定义的是字,而$-buf得到的是字节数,想知道num个数得要除以2
   MAX    DW    ?‍
   MIN     DW    ?‍
   DATA    ENDS‍
   CODE    SEGMENT  USE16‍
       ASSUME   CS:CODE, DS:DATA‍
START:MOV AX,DATA‍
            MOV  DS, AX‍
            MOV  SI,OFFSET BUF‍
            MOV  CX, CN‍
            DEC    CX‍    #由于预置数是第一个元素,所以只需要比较比较n-1次
            MOV   AX, [SI]‍
            MOV   MAX, AX‍
           MOV   MIN, AX‍
  COMPA:______‍
            MOV   AX,[SI]‍
            CMP    AX,MAX‍
            JL      NEXT‍
    MOV   MAX,AX‍
            ______‍
NEXT:  CMP    AX,MIN‍
            JG    LOP‍
            MOV  MIN,AX‍
 LOP:     _____‍
            MOV  AH,4CH‍
            INT 21H‍
CODE     ENDS‍
           END START
  • ANS:5;31
    分析:SI默写是指向DATA处的指针。看了书上的程序之后,发现一般REPE和REPNE都是在应该终止的那个字符的后一个,所以通常会跟上一个DEC,来指向所要的那个字符。
    本题就是1,index = 5,AL = '1’的ascii码 即 31H
数据段ds和附加段es分别定义字符串变量STR1和STR2如下,其中,变量STR1和STR2的偏移地址都为0。
STR1  DB ‘Hello1ABC‘
STR2  DB ‘Hello2ABC’
则执行以下程序段后,SI=______H,AL=______H。 (注:(1)字符全部大写,并且为半角字符。(2)答案和答案之间用一个半角空格分开。)
LEA SI,STR1     
LEA DI,STR2     
MOV CX,9
CLD          
REPE CMPSB   
JZ STOP      
DEC SI          
MOV AL,[SI]     
STOP;

6.XOR在这里可以用来判断最高位是否相同,相同SF=0,不同SF=1,因此可以用JS/JNS指令进行条件转移。在这里插入图片描述
下面这题如果使用XOR的话,还得需要知道AL其他每一位的值才行
在这里插入图片描述
7.MOV指令是不影响6个状态标志位的。
在这里插入图片描述
8.考点:

  • CS IP是由操作系统赋值的
  • SS SP可由操作系统赋值也可以由程序员赋值
  • 其余均为程序员

在这里插入图片描述
9.书写规范在这里插入图片描述
10.XOR确实可以达到按位取反的效果。
在这里插入图片描述

六、汇编语言程序设计(一)

1.概念类
①END语句表示源程序到此结束
②键盘上按的9实际上返回的二进制编码是’9’对应的ascii码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
⑥XCHG 命令交换两个操作数(限制同mov)
⑦edit得到.asm文件,然后汇编得到.obj目标文件,最后链接得到.exe文件或.com文件
⑧要在屏幕上显示一彩色字符串,可以调用的是(BIOS INT 10H的13H号)功能调用。
⑨【DOS INT 21H 的功能号09H】会破坏AL寄存器的值
(10)设置逻辑段应该采用的一对伪指令是 (segment/ends即SEGMENT/ENDS
(11)1号DOS系统功能调用,从键盘键入的字符ASCII码存放在**(AL)寄存器中
(12)DOS调用和BIOS调用的功能号都存放在
(AH)寄存器中
(13)不依赖于计算机结构的语言是(高级语言)
(14)问题:下面
哪个逻辑段寄存器一定是由程序员赋值的**。
选项:A:DS B:SS C:CS D:ES
答案: 【DS; ES】
2.读程序:

阅读下面程序段:​
‌             MOV  DL,0​
‌             MOV  CX,8​
‌             MOV  BL,100​
‌AGA:    MOV  AL,30H     ​
‌             SHR   BL,1 ​
‌            JNC    NEXT​
‌            MOV   AL,31H            ​
‌NEXT:  RCL   DL,1​
‌            MOV   AH,0EH​
‌            INT    10H ​
‌            LOOP  AGA​
‌   执行本程序后DL=_______ H;屏幕上显示内容为_______。

关键:标志寄存器中的CF是共用的,所以在RCL DL 1的时候会让DL得到1。
ANS:26 00100110
其次注意,这边的移位功能是将BL中的二进制代码逆序显示,与书本上的模版相反。
3.DOS的09H号功能基本上都要考察$结尾符号!

	问题:数据段    
MESG1  DB  ’HELLO‘   
MESG2  DB  ’WELCOME$‘
代码段  
MOV AH,9 
MOV DX,OFFSET  MESG1 
INT  21H
	执行上述程序段后,屏幕上显示的内容是__。
答案: 【HELLOWELCOME】

七、汇编语言程序设计(二)

1.指令性语句在汇编时被翻译成机器指令。伪指令语句在汇编时由汇编程序执行。
2.在汇编语言中,用于定义变量、内存空间分配的是伪指令
3.别ptr用魔怔了。。。。
在这里插入图片描述
后面实际上就是立即数,前面用间址、变址、基址、基址+变址的寻址方式的时候,需要用ptr进行转换。
在这里插入图片描述

4.
首先得了解ascii码仅占用7位bit,校验码的位置放在最高位(D7)
其次,根据p标志得到这个8个bit中1个数是否为偶数位,如果是偶数位需要将标志位设置为1

下面程序段的功能是将STRING单元中的一串标准ASCII码,转换为奇校验ASCII码存入BUF开始的缓冲区,将程序补充完整。‌
.486‌
DATA      SEGMENT USE16‌
STRING    DB     'THE QUICK BROWN FOX JUMPS OVER LAZY DOG '‌
COUNT    EQU     $-STRING‌
BUF       DB      COUNT DUP(?)‌
DATA      ENDS‌
CODE      SEGMENT USE16‌
           ASSUME CS:CODE,DS:DATA,ES:DATA‌
BEG:     MOV     AX,DATA‌
          MOV     DS,AX‌
          _____________________ ;MOV ES,AX  	# 数据段重叠
          MOV     CX,COUNT‌
         MOV     SI,OFFSET STRING‌
          MOV     DI,OFFSET BUF‌
          _____________________‌ ;CLD			# 设置D标志
LOAD:    LODSB‌
          AND  AL,AL ‌
          JNP     STORE‌
          _____________________ ;OR AL,80H		# 设置最高位的标志位
STORE:   STOSB‌
          LOOP    LOAD‌
          MOV     AH,4CH‌
          INT     21H ‌
CODE     ENDS‌
          END    BEG
下列程序的功能是用串指令将某数组100H个字元素从内存23456H处传送到内存78B90H,并统计该数组元素的值=FFFFH的元素个数送DL寄存器。将下面程序补充完整。‎
.586‎
CODE SEGMENT USE1‎
 	 ASSUME  CS:CODE‎
BEG: MOV   AX,2000H‎
           MOV   DS,AX ‎
           MOV   SI,__________; 3456H       ‎
           ___________________;	MOV AX,7800H	# ES附加段的段基址
           MOV   ES,AX ‎
           MOV   DI ,0B90H‎
 		   MOV   CX,100H‎
 			____________________; CLD			# 使用串指令前要设置好D标志
 REP  MOVSW‎
         MOV    DI,0B90H               ‎
         MOV    CX,100H‎
AGA:    CMP    _________,0FFFFH‎; WORD PTR ES:[DI]	# 这边的两个关键点:①立即数是16位的,word类型强转②DI寄存器是指向ES附加段的而非默认的DS,所以需要声明。
JNZ     NEXT                  ‎
        INC   DL‎
NEXT:   __________‎				;ADD DI,2			# 一个字类型!!!
       LOOP    AGA‎
       MOV     AH,4CH‎
       INT      21H ‎
CODE ENDS‎
‏       END  BEG

6.在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现占内存空间大,但速度快
7.CPU执行近过程RET指令,从堆栈中弹出( 2 )个字节
8.在这里插入图片描述
9.实模式下在程序运行过程中,下一条指令物理地址的计算表达式是( CS*16+IP
10.宏指令必须先定义,后调用;而子程序则可以先调用,后定义√
11.指令LOOP AGAIN实现的功能可以用两条指令完成,请写出这两条指令。
DEC CX
JNZ AGAIN;

12.程序与调用它的主程序不在同一个代码段,则CPU在执行子程序中的RET指令后,将从堆栈栈顶弹出4 个字节,依次赋给IPCS。(P101)—>在PUSH的时候,先CS后IP

其他

1.由存储空间范围计算对应的存储容量:
在这里插入图片描述
2.常识:
在这里插入图片描述
3.审题,人家就是字数组,不需要ptr
在这里插入图片描述
4.在+SI的时候即+3,直接在table上往右数了三个数字,然而这是一个WORD型变量,导致实际上偏移了6个字节
在这里插入图片描述
5.魔怔了,之前都是二进制显示,使用的是左移,但是这边是右移,也就是低位先被显示出来,所以实际上这里的答案都是逆序的。
在这里插入图片描述
6.一八年真题:
在这里插入图片描述
在这里插入图片描述
7.有关有无符号数的范围问题:
在这里插入图片描述
在这里插入图片描述
8.第二章内容补充
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9.第三章知识点补充:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

往年真题补充:

1.在这里插入图片描述
2.
在这里插入图片描述
在这里插入图片描述
3.IP偏移地址不变在这里插入图片描述
4.在这里插入图片描述
5.默认是以AL为目标寄存器
在这里插入图片描述
清零操作:在这里插入图片描述
在这里插入图片描述
其他清零操作指令还有“移位指令”
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ANS: ROM; RAM
在这里插入图片描述

当堂检测题目补充:

1.这题考点是AL作为SCASB的默认寄存器,DI指针搜索到目标位置的下一个位置,其次书写答案的时候DI是16位bit,所以写16进制的时候最好写成4位
在这里插入图片描述
2.伪指令为汇编程序和链接程序提供信息,其功能是由相应的软件完成的。
在这里插入图片描述
3.紧凑BCD码—>存的时候注意!!!!
在这里插入图片描述
4.指令地址在第一个字节
在这里插入图片描述
5.CPU的主要组成包括运算器和控制器
在这里插入图片描述
6.。。。。。。
在这里插入图片描述
7.数据信号是由数据总线传输的。
在这里插入图片描述
8.硬盘是辅助存储器
在这里插入图片描述
9.我算出来是56H,答案给的是16进制!!!!!!一定小心!!!!!
在这里插入图片描述
10.子程序的两种类型属性。
在这里插入图片描述

真题卷补充:

1.别忘记返回DOS啊,子程序要RET,MOV AH, 4CH INT21H
在这里插入图片描述
2.有关EXE文件和COM文件的区别
在这里插入图片描述
3.读程题功能:
在这里插入图片描述
4.运算器、控制器、存储器、输入设备、输出设备
在这里插入图片描述
5.六个状态标志位(缩写及其对应的中文名称)
在这里插入图片描述

汇编实验中注意的点:

①实验一:
在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Ocean__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值