• 汇编程序设计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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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;屏幕上显示内容为_______。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    关键:标志寄存器中的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
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    下列程序的功能是用串指令将某数组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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    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.六个状态标志位(缩写及其对应的中文名称)
    在这里插入图片描述

    汇编实验中注意的点:

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

  • 相关阅读:
    VUE3 之 使用 Mixin 实现代码的复用 - 这个系列的教程通俗易懂,适合新手
    别人熬夜看世界杯 我熬夜改代码 你满意了
    双十一购物指南:电视盒子哪个牌子好?口碑电视盒子品牌排行榜
    【Java】常用API——日期时间类、System类
    【考研数学】线性代数第五章 —— 特征值和特征向量(1,理论背景与基本概念)
    算法_每日一题(9.7)
    索引设计的原则?
    Unity 3D视频教程
    idea控制台背景色
    软件测试入门之接口测试
  • 原文地址:https://blog.csdn.net/zjjaibc/article/details/132839015