微机原理与应用精炼100题-程序员宅基地

技术标签: 硬件工程  笔记  嵌入式硬件  

  1. 堆栈指针的作用是用来指示栈顶元素

  2. ‏SP做堆栈指针时,其内容必须指向堆栈栈顶

  3. 程序计数器(PC)的位数取决于机器字长

    字长:CPU中运算器一次能处理二进制数的最大位数

  4. 8位补码操作数"1001 0011"等值扩展为16位后,其机器数为1111 1111 1001 0011

    如果最高位是1(表示负数),则扩展位都填1;如果最高位是0(表示正数或零),则扩展位都填0。

  5. 具有指令流水线结构的CPU,一般情况下指令的执行时间主要取决于:主频

  6. 微处理器的字长主频ALU结构以及指令集等功能是影响其处理速度的主要因素。

  7. 微型计算机系统的主要性能指标有:字长存储容量指令系统运算速度系统配置

  8. CPU对外设进行数据传送的方式有程序方式、中断方式、DMA方式。

  9. 微处理器是由算术逻辑部件ALU控制部件寄存器内部总线等4部分组成

  10. 指令的执行由取指令、译码、执行构成

  11. 微型计算机是由微处理器存储器I/O接口系统总线等4部分组成。

  12. 微型计算机系统是在微型计算机基础上,配置系统软件外部设备组成。

  13. 8086CPU的数据总线宽度为16位,地址总线宽度为20位,I/O地址总线宽度为16位

  14. 一个单元的逻辑地址不唯一

  15. 8086CPU从存储器中预取指令,它们采用的存取原则为先进先出原则

  16. 当8086CPU从总线上撤消地址,而使总线的低16位置成高阻态时,其最高4位用来输出总线周期的状态信息

  17. 清除 CF 标志的指令为CLC

  18. 变量/标号的三个属性是段属性, 偏移属性,类型属性

  19. 80486允许有段的重叠和交叉

  20. 8086指令的操作数寻址方式分为:立即寻址寄存器寻址存储器寻址I/O端口寻址

  21. 8086指令的存储器寻址方式分为:直接寻址寄存器间寻址寄存器相对寻址基址加变址寻址相对的基址和变址寻址

  22. 不管是什么CPU,其指令系统都包含如下指令类型:算术运算指令逻辑运算指令数据传送指令

  23. 8086 的堆栈操作总是按双字进行的。

  24. 8086 CPU 复位后,寄存器中的值将进入初始态后CS=0FFFFH,IP=0000H,DS=0000H

  25. 8086、 8088CPU的复位起始工作地址是多少?怎样形成这个地址的?系统一旦被启动,如何自动进入系统程序?

    复位起始工作地址是FFFFOH,这个地址由厂家设置,系统一旦被启动在FFFFF0H处存放一条无条件转移的指令指向系统初始化程序。

  26. 执行单元(EU):从BIU中的指令队列寄存器中取得指令和数据,执行指令要求的操作。

  27. 总线接口单元(BIU):负责与存储器,I/O端口传送数据。

  28. 80X86工作在实模式下时,每个物理存储单元对应唯一的物理地址,其范围是0 ~ FFFFFH

  29. 32位微处理器有两个独立的物理空间,一个是存储空间,另一个是 I/O 空间

  30. 设BUF是变量,指令MOV AL, BUF中源操作数的寻址方式是直接寻址

  31. 指令SUB CX, [BX+2]的源操作数的寻址方式是基址寻址

  32. 实模式下,CPU要执行的下一条指令的逻辑地址分别存放在( CS:IP )寄存器中。

    实模式下,CPU要执行的下一条指令的偏移地址存放在IP 寄存器中,代码段的段基址在CS中,因此逻辑地址存放在CS:IP中。

  33. 下列存储器操作数的段超越前缀可省略的是SS:[BP]

    间址寄存器只能是BX,SI,DI ,BP,其中BP约定查找堆栈段,因此当寻址的操作数在堆栈段,并且用BP作为间址寄存器,此时该段前缀可省略。

  34. 指令MOV AX,[BX]目标操作数、源操作数的寻址方式分别是寄存器寻址,间址寻址

  35. 指令MOV AX,[BX+1234H]的寻址方式是相对的基址和变址寻址

  36. 已知CNT EQU 1223H,则以下与MOV BL,23H等效的指令是MOV BL,LOW CNT

  37. 传送数据时,占用CPU时间最长的传送方式是查询

  38. 分析问题:

    A. MOV [BX], SI

    这个指令试图将 SI 寄存器的值移动到由 BX 寄存器指定的内存地址中。在实模式下,BX 可以作为基址寄存器用于间接寻址,所以这个指令是合法的

    B. MOV [DX], SI

    这个指令试图将 SI 寄存器的值移动到由 DX 寄存器指定的内存地址中。然而,在实模式下,DX 通常不直接用作间接寻址的基址寄存器。它通常与其他寄存器(如 BX)结合使用,形成16位的偏移量,或者在某些指令中作为数据段寄存器使用。因此,这个指令在实模式下是非法的

    C. MOV [AX], SI

    这个指令试图将 SI 寄存器的值移动到由 AX 寄存器指定的内存地址中。但是,AX 是一个累加器寄存器,通常用于算术运算和I/O操作,而不是作为间接寻址的基址寄存器。因此,这个指令是非法的

    D. MOV [CX], SI

    这个指令试图将 SI 寄存器的值移动到由 CX 寄存器指定的内存地址中。CX 是一个计数器寄存器,通常用于循环操作,而不是作为间接寻址的基址寄存器。因此,这个指令也是非法的

  39. MOV SI,EBX指令,两个操作数长度不相等,指令是非法的。

  40. 在实地址模式下,设SS=2FD0H ,DS=2F34H,BP=02F6H,则指令MOV AL,[BP]源操作数的物理地址是2FFF6H

    BP寄存器间址寻址约定查找的是堆栈段,因此操作数的物理地址是SS16+BP=2FD0H16+02F6H=2FFF6H

  41. 指令MOV AX,1234H源操作数的寻址方式是立即寻址

  42. 寻址方式:

    A) MOV AX, [4000H];直接寻址
    B) MOV [BX], AX;寄存器寻址
    C) SUB AX, 2000H;立即寻址
    D) MOV AX, [SI+12H];寄存器相对寻址
    E) MOV CX, [BX];寄存器间接寻址
    F) MOV AX, [SI+BX+10H];
    
  43. 间址寻址寄存器只能是BX,BP,SI,DI

  44. 已知BP=2000H,DS=2000H,SS=1000H,则实模式下,指令MOV AX,[BP+100H]源操作数存放在物理地址为12100H的单元中。

    指令MOV AX,[BP+100]源操作数的寻址方式为基址寻址,BP约定查找的是堆栈段,因此物理地址为SS16+BP+100H=12100H*

  45. 符号指令和机器指令是一对一的关系

  46. 间址寻址寄存器只能是BX,BP,SI,DI

  47. 8086的标志寄存器FLAG中定义的状态标志有6

  48. 寄存器间接寻址方式中,操作数在内存单元中

  49. 系统总线中地址线的功能是指定主存和I/O设备接口电路的地址

  50. 若某个接口电路可以使用查询方式和CPU交换信息,则该接口电路中至少需要设置数据和状态端口

  51. 如果要控制的外部设备是发光二极管,应选用的最佳输入输出控制方式是无条件传送方式

  52. 分析

    A. IN DX,AX - 这是错误的,因为 DX 是一个目标寄存器,而 AX 在这里被用作源端口地址,这是不允许的。

    B. IN DX,AL - 这也是错误的,因为 DX 是一个16位寄存器,而 AL 是一个8位寄存器。你不能将一个8位值放入一个16位寄存器。

    C. IN AX,DX - 这是正确的。这条指令从由 DX 寄存器指定的16位端口读取一个字(16位)到 AX 寄存器。

    D. IN AX,[DX] - 这是错误的,因为x86汇编中的 IN 指令不支持使用方括号 [DX] 来指定间接端口地址。

  53. 三态缓冲器可以用作简单的输入接口

  54. 常用的I/O端口编址方式包括统一编址独立编址两种

  55. 若某数据端口的地址为90H,则由该端口向CPU输入一个数据,使用的指令是IN AL,90H

  56. 80x86系统采用8259A的中断类型码为88H,则中断输入端为$IR_0$,中断服务程序的段地址为00222H,偏移地址为00220H

    (1)由于中断类型码为88H,其低三位为000,所以中断输入端为$IR_0$ (2)中断服务程序的偏移地址和段地址分别为4n和4n+2两个字单元,而4*88H=220H

  57. 系统RAM的240H~243H单 元的内容是90H型中断的中断向量。

    n型中断的中断向量存放在系统RAM的4n-4n+3这4个单元,因此240H-243H里存放的应该是240/4 型中断的中断向量。240H /4=0010010000B=90H

  58. 若已知系统RAM的60H~63H单元的内容依次为25H,34H,96H,18H,则18H型中断服务程序所在代码段的段基址为1896H,中断服务程序入口的偏移地址为3425H

  59. 执行IRET指令,从栈顶弹出的3个字依次送入IP,CS,FR寄存器

  60. 据中断源的不同,中断可以分为硬件中断和软件中断两大类()

    根据中断源的不同,中断可以分为外部中断内部中断两大类。

  61. 实模式下,中断向量是指中断服务程序的入口地址

  62. 80x86有两个外部中断请求线:NMI(non makable interrupt)、INTR(可屏蔽中断)

  63. 8086微机系统的RAM存储单元中,从0000H:002CH开始依次存放23H,0FFH,00H和0F0H四个字节,则向量的中断号为0BH

    002CH/4=向量的中断号

  64. 1片8259A中断控制器可以管理8级中断

  65. 若已知系统RAM的20H~23H单元的内容依次为12H,34H,56H,78H,则08H型中断服务程序的入口物理地址为7B972H。

    ***20H,21H中存放的是08H中断服务程序入口的偏移地址,22H,23H中存放的是08H中断服务程序的段基址,则08H型中断服务程序的入口物理地址为7856H16+3412H=7B972H

  66. 实时时钟中断源包括报警中断和周期中断

  67. 用户中断的中断类型码是71H和0AH

  68. 非屏蔽中断和软件中断不可以被屏蔽。

  69. 软件中断,中断类型码是由指令提供

  70. 利用8254每20ms产生一次中断,若CLK为2MHZ,则工作方式和计数初值分别是方式2,40000

    $N=f_{clk}/f_{out}$

  71. PC机8254的0号计数器提供系统日时钟中断

  72. ‌若某8254的计数器的初值为20000,则该计数器的初值写入时,应设置为二进制

    8254的计数器的初值超过10000,则初值只能选择二进制

  73. 8254计数初值N与输入信号频率$f_{clk}$、输出信号频率的关系为$N=$$f_{clk}/_{fout}$

  74. 8254计数初值N与输入信号频率$f_{clk}$、输出信号频率$f_{out}$的关系为:$N=f_{clk}/f_{out}$

  75. ‏串行异步通信帧格式约定数据位及停止位分别为5~8、1~2位。

  76. 串行异步通信的RS-232C接口标准中,为发送数据而建立的一对控制信号是RTS/CTS

  77. 在Intel 8250芯片中,实现并行数据转换为串行的是发送器

  78. RS232C接口标准中逻辑电平的取值范围,规定:逻辑“1”信号,电平在–3V ~ -15V 之间;逻辑“0”信号,电平在 +3V ~ +15V 之间。

  79. 按照串行数据的时钟控制方式,串行通信可以分为串行同步通信串行异步通信

  80. ‌串行异步通信协议要求收、发双方预置的数据帧格式通信速率必须一致。

  81. 异步通信一帧数据格式中,按照发送的次序,先传送起始位

  82. 8250内部的中断中,优先级最高的是接收数据错中断

  83. 找出错误原因:

    MOV DS,1000H;立即数不能直接送给段寄存器
    MOV BUF,[BX]; (BUF 已定义为字节变量) 两个操作数不能同为内存操作数
    ‌
    MUL 100 ;乘数不能是立即数
    SAL AX,CX ;移位次数只能是立即数或CL寄存器
    
  84. 已知某数据段定义如下,则变量D6的偏移地址是( 0013H )。

    DATA SEGMENT
    D1 DB  5 DUP(0)
    ‏
    D2 DW  2 DUP(?)
    
    D3 DB  'Hello!'
    
    D4 EQU 100; 这是一个等值定义,不占用存储空间,只是一个符号常量 
    
    D5 DD  1234H
    
    D6 DB  ?
    DATA ENDS
    
  85. 已知BUF DW 'AB' ,则汇编后BUF+1单元存放的内容为41H

    双字节数的低位字节存放在低地址单元,高位字节存放在高地址单元。因此(BUF)=42H,(BUF+1)=41H

  86. 两个压缩的BCD数25与58相加,运算后的结果需要进行修正,修正后,运算结果为83H

    ****BCD码调整指令的作用是对二进制的运算结果调整成十进制结果。组合十进制数加法调整指令是对存放在AL中的由两个组合BCD码数相加的和进行修正,得到正确的组合BCD码结果。而这两个BCD码十进制的加法结果是83,因此答案为83H

  87. 将BUF内存单元的偏移地址传送到BX中,可以用MOV BX, OFFSET BUF实现,还可以用功能相同的指令[LEA](<https://www.cnblogs.com/milantgh/p/3919662.html>) BX,BUF 实现。

    (1)不能有多余的空格,例:操作码和操作数之间空格只有一位;操作数和操作数之间不能有空格,用半角逗号隔开。 (2)字符全部大写,并且为半角字符。

  88. 设AX=1234H,BX=5678H,阅读下列程序段,完成相应空格。 该程序段执行后,SP=2000H ,AX=1234H,BX=5678H ,CX=5678H,DX=1234H

    MOV SP, 2000H  ; 将栈指针SP设置为2000H地址  
    
    PUSH AX  ; 将AX寄存器的内容压入栈中  
      
    PUSH BX  ; 将BX寄存器的内容压入栈中
    
    POP CX  ; 从栈中弹出内容到CX寄存器  
    
    POP DX  ; 从栈中弹出内容到DX寄存器  
    
  89. 设DS=2000H,SS=4000H,BX=1000H,BP=1000H, (21000H)=1234H,(21002H)=5678H,(41000H)=3456H,(41002H)=789AH。写出下列三条指令执行后的结果。

    (1)MOV AX,DS:[1000H]      ; AX=1234H。源操作数的物理地址为DS*16+1000H=21000H ,因此寻址的16位操作数为1234H。
    (2)MOV AL,BYTE PTR [BX+2] ; AL=78H。源操作数的物理地址为DS*16+BX+2=21002H ,因此寻址的8位操作数为78H。
    (3)MOV AH,[BP]            ; AH=56H。源操作数的物理地址为SS*16+BP=41000H ,因此寻址的8位操作数为56H。
    
  90. 数据段定义如下则 L1=5, L2=10

    BUF DB  'NJUPT'
    L1 EQU $-BUF   ;L1 是 BUF 的长度
    ‍
    S DB 'EDUCN'
    ‍
    L2 EQU $-S;L2 是 S 的长度
    
  91. 设AX=2345H,BX=98A0H,程序段执行后,SP=0100H ,AX=2345H,BX=2345H ,BP=0FCH,CX=98A0H

    MOV SP,0100H  ;SP=0100H
    PUSH AX       ;SP=00FEH(字减2,双字减4),在这里字是16位
    PUSH BX       ;SP=00FCH
    MOV BP,SP     ;BP=SP=00FCH
    MOV BX,[BP+2] ;源操作数为堆栈段偏移地址为BP+2=00FEH单元的内容,即进栈的AX的值,因此BX=2345H
    POP CX        ;CX=栈顶单元的内容,即进栈的BX的值即98A0H,此时 ;SP=00FEH
    POP AX        ;AX=栈顶单元的内容,即进栈的AX的值即2345H,此时 ;SP=0100H
    
  92. 执行下列指令后,AX寄存器中的内容是1E00H

    TABLE DW 10,20,30,40,50;000AH,0014H,001EH……
    ‏
    ENTRY DW 3
    ‏
    MOV BX,OFFSET TABLE;获取TABLE数组的首地址并存储在BX中
    MOV SI,ENTRY
    MOV AX,[BX+SI]
    
  93. 设数据段有如下定义:请问CN的值是9(十进制结果)

    X   DB  'AB',-1      ;3字节
    Y   DW  12H,4567H    ;4字节
    Z   DB   5 DUP('A')  ;5字节
    CN  EQU  $-Y
    
  94. 设AL=74H,则指令CMP AL,47H执行后,AL的值为74H

  95. ‏在MOV AL ,[BX]指令之后,不可直接使用JZ指令判断AL中内容是否为0

    MOV指令不影响标志寄存器的状态位,因此不能直接使用JZ指令判断AL中内容是否为0

  96. ‎80x86微处理器的标志寄存器中,和串指令相关的的标志位是DF

  97. 设BX中有一个16位带符号数。若要将BX中的内容除2,指令为:SAR BX,1

    若不带符号,则SHR BX,1

  98. 要实现内存某缓冲区中查找有无关键字符’K’,应使用REPNE SCASB指令。

  99. 希望串操作指令自动将地址指针减量,则事先应把DF标志位设置为1

  100. 实地址模式下,DS由程序员赋初值的,而CS由系统赋值。

  101. 该程序段执行后,BX=6

    MOV CX, 16       ; 将计数器CX初始化为16,用于LOOP指令  
    MOV BX, 0        ; 初始化BX为0,可能用于记录某些条件满足的次数  
    MOV DX, 1        ; 初始化DX为1,用作AND操作的掩码  
      
    DON:              ; 标记循环开始的位置  
        MOV AX, 2AB0H ; 将立即数2AB0H加载到AX寄存器  
        AND AX, DX    ; 将AX与DX进行按位与操作,结果存回AX  
        JZ NEXT       ; 如果结果为0(即ZF标志被设置),跳转到NEXT标签  
        INC BX        ; 否则,BX寄存器加1  
      
    NEXT:             ; 标记跳转位置  
        SAL DX, 1     ; 将DX左移1位,相当于乘以2  
        LOOP DON      ; 循环CX次,每次循环后CX减1,直到CX为0时退出循环
  102. 下面程序段的功能是在一组数据中,找出最大数和最小数(有符号数),并分别存入MAX和MIN单元中。请在程序中各横线上填入适当的指令语句。

DATA SEGMENT USE16  
    BUF     DW   500, -600, 67, 433, -1 ; 定义字类型数组BUF,并初始化
    CN      DW   ($ - BUF) / 2 ; 计算BUF数组元素的个数($表示当前位置)
    MAX     DW   ? ; 用于存储最大值
    MIN     DW   ? ; 用于存储最小值
DATA ENDS  
  
CODE SEGMENT USE16  
    ASSUME CS:CODE, DS:DATA  
  
START: MOV AX, DATA ; 将数据段地址加载到AX寄存器  
       MOV DS, AX ; 将数据段地址设置到DS寄存器  
       MOV SI, OFFSET BUF ; 将BUF数组的地址加载到SI寄存器  
       MOV CX, CN ; 将数组元素个数加载到CX寄存器(循环计数器)  
       DEC CX ; 由于数组索引从0开始,所以CX减1  
       MOV AX, [SI] ; 加载数组的第一个元素到AX寄存器  
       MOV MAX, AX ; 假设第一个元素是最大值  
       MOV MIN, AX ; 假设第一个元素是最小值  
  
COMPA: ADD SI, 2 ; 移动SI到下一个元素(字类型占2字节)  
       MOV AX, [SI] ; 加载当前元素到AX寄存器  
       CMP AX, MAX ; 比较AX与当前最大值  
       JL NEXT ; 如果AX小于MAX,跳转到NEXT  
       MOV MAX, AX ; 否则,更新MAX为当前AX的值  
  
NEXT:  CMP AX, MIN ; 比较AX与当前最小值  
       JG LOP ; 如果AX大于MIN,跳转到LOP  
       MOV MIN, AX ; 否则,更新MIN为当前AX的值  
  
LOP:   LOOP COMPA ; 循环,直到CX为0  
       MOV AH, 4CH ; 设置DOS中断号为4CH(程序结束)  
       INT 21H ; 调用DOS中断  
  
CODE ENDS  
    END START

  1. 程序段执行后,AX=4124H,BX=4124H
MOV  AX, 1234H   ; 将立即数1234H加载到AX寄存器中  
MOV  CL, 4       ; 将立即数4加载到CL寄存器中,CL通常用作循环或位移操作的计数寄存器  
ROR  AX, CL      ; 将AX寄存器中的值循环右移CL寄存器指定的位数(这里是4位)  AX=4123H
INC  AX          ; AX寄存器中的值加1  ,AX=4124
MOV  BX, 0       ; 将BX寄存器清零  
ADD  BX, AX      ; 将AX寄存器中的值加到BX寄存器中

  1. 程序段执行后,AX=2+4+6+8+10+12+14+16+18+20 =110
XOR  AX, AX          ; 将AX寄存器清零  
MOV  BX, 2           ; 将BX寄存器设置为2  
MOV  CX, 10          ; 将CX寄存器设置为10(用作循环计数器)  
  
AGA:  
    ADD  AX, BX      ; 将BX的值加到AX上  
    ADD  BX, 2       ; 将BX的值增加2  
    LOOP AGA          ; 循环回到AGA标签,直到CX为0
  1. 已知:AX=0FE66H,CF=1,执行下列指令序列后,CF=1,BL**=**C9H
MOV BL,27H
‎
ROL BL,1
‎
ROR BL,3;循环右移

  1. 数据段和附加段分别定义字符串变量STR1和STR2如下,其中,变量STR1和STR2的偏移地址都为0。执行以下程序段后,SI=5H,AL=31H
STR1  DB 'Hello1ABC'  
STR2  DB 'Hello2ABC'
  
LEA SI, STR1      ; 将STR1的地址加载到SI寄存器中  
LEA DI, STR2      ; 将STR2的地址加载到DI寄存器中  
MOV CX, 9         ; 将CX寄存器设置为9,用于循环次数  
CLD               ; 清除方向标志位DF,使得串操作指令自增SI和DI  
  
REPE CMPSB        ; 重复比较SI和DI指向的字节,直到不匹配或CX为0  
JZ STOP           ; 如果比较结果为零(即相等),跳转到STOP标签  
  
DEC SI            ; 将SI寄存器减1,指向STR1中的前一个字符  
MOV AL, [SI]      ; 将SI指向的字节值加载到AL寄存器中  
  
STOP:             ; STOP标签,表示程序执行到此处停止

  1. DOS功能调用的02H和09H都会破坏AL寄存器的值。
  2. 机器语言和汇编语言都和CPU的硬件结构紧密相关,高级语言不依赖于特定计算机的结构和指令系统
  3. 汇编语言属于低级语言
  4. 在汇编程序的开发过程中,链接之后所产生的文件是.COM文件和.exe文件
  5. 汇编语言源程序可以没有数据段,也可以没有堆栈段,但一定要有代码段
  6. 若从键盘输入字符‘8',屏幕上显示8H
STRING DB 'ABCDEFGHIJ' ; 定义一个字符串  
  
; ... 其他代码 ...  
  
MOV AH, 01H       ; 设置功能号,准备调用DOS中断21H来从键盘读取一个字符  
INT 21H           ; 调用DOS中断,读取的字符ASCII码存放在AL寄存器中  
  
SUB AL, 30H       ; 从AL中减去'0'的ASCII码值,将数字字符转换为对应的数字值  
DEC AL            ; 将得到的数字值减1,因为字符串索引是从0开始的  
  
MOVZX SI, AL      ; 将AL中的值零扩展后移动到SI寄存器中,作为字符串的索引  
MOV BX, OFFSET STRING ; 将STRING字符串的地址放入BX寄存器  
MOV DL, [BX+SI]    ; 根据索引从STRING中取出对应的字符,存放到DL寄存器中  
  
MOV AH, 02H       ; 设置功能号,准备调用DOS中断21H来显示一个字符  
INT 21H           ; 调用DOS中断,显示DL寄存器中的字符

  1. 执行本程序后DL=屏幕上显示内容为
MOV DL, 0         ; 初始化DL寄存器为0  
MOV CX, 8         ; 设置循环计数器CX为8  
MOV BL, 100       ; 将100加载到BL寄存器中
  
AGA: MOV AL, 30H  ; 将30H(ASCII码中的'0')加载到AL寄存器中  
     SHR BL, 1     ; 将BL寄存器中的值右移1位  
     JNC NEXT      ; 如果移位操作没有产生进位,则跳转到NEXT标签  
     MOV AL, 31H   ; 否则,将31H(ASCII码中的'1')加载到AL寄存器中  
  
NEXT: RCL DL, 1    ; 将AL寄存器中的最低位旋转到DL寄存器的最高位  
     MOV AH, 0EH   ; 设置DOS视频服务的功能号,准备输出字符  
     INT 10H       ; 调用DOS中断,输出DL寄存器中的字符到屏幕  
     LOOP AGA      ; 递减CX并检查是否为0,如果不为0则跳转到AGA标签继续循环

  1. 设计基于8086 CPU的汇编语言程序,实现Z=X+Y,其中X和Y均为8位无符号数
DATA SEGMENT
    DX DB ? ; 定义一个字节变量 DX
    DY DB ? ; 定义一个字节变量 DY
    DZ DW ? ; 定义一个字变量 DZ
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE, DS:DATA ; 设置代码段和数据段的寄存器
    START: MOV AX, DATA ; 将数据段地址加载到 AX 寄存器
        MOV DX, AX ; 将 AX 寄存器的值复制到 DX 寄存器
        MOV AH, 0 ; 将 AH 寄存器的值设置为 0
        MOV AL, DX ; 将 DX 寄存器的值复制到 AL 寄存器
        MOV BL, DY ; 将 DY 寄存器的值复制到 BL 寄存器
        ADD AL, BL ; 将 AL 和 BL 寄存器的值相加,结果存储在 AL 寄存器中
        ADC AH, 0 ; 如果上一步的加法溢出,将溢出值加到 AH 寄存器中
        MOV DY, AX ; 将 AX 寄存器的值复制到 DY 寄存器
CODE ENDS
    END START


  1. ASSUME伪指令的功能是用来指示程序中各实际的段和各段寄存器之间的关系。
  2. 采用分支结构。首先判断X≥0还是X<0,如果X<0,则Y=-1;如果X≥0,则在判断X=0还是X>0,从而确定数值Y。Y的值存放在DTY中。
DATA SEGMENT
    DTX DB ?          ; 定义一个字节大小的变量DTX
    DTY DB ?          ; 定义一个字节大小的变量DTY
DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA   ; 将数据段地址加载到AX寄存器
       MOV DS, AX     ; 将AX寄存器的值传递给DS寄存器,使DS指向数据段
       MOV AL, DTX    ; 将DTX的值加载到AL寄存器
       CMP AL, 0      ; 比较AL寄存器的值与0
       JGE BGE        ; 如果AL >= 0,则跳转到BGE标签
       MOV AL, 0FFH   ; 如果AL < 0,将0FFH(-1)加载到AL寄存器
       JMP EQ1        ; 无条件跳转到EQ1标签
BGE:  JZ EQ1         ; 如果AL = 0,则跳转到EQ1标签
       MOV AL, 1      ; 如果AL > 0,将1加载到AL寄存器
EQ1:  MOV DTY, AL    ; 将AL寄存器的值存储到DTY变量中
       MOV AX, 4C00H  ; 将4C00H加载到AX寄存器,表示程序正常结束
       INT 21H        ; 调用DOS中断21H,结束程序
CODE ENDS
END START

  1. DOS的1号功能调用是键入字符,且有回显。即AH=01H
  2. 串行通讯分为同步和异步通讯,其中数据传输率高的是同步通讯,这是因为在该方式下,信息的比例较小。
  3. DAC 0803的工作方式:直通方式、单缓冲工作方式、双缓冲工作方式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_58526902/article/details/137117507

智能推荐

leetcode 172. 阶乘后的零-程序员宅基地

文章浏览阅读63次。题目给定一个整数 n,返回 n! 结果尾数中零的数量。解题思路每个0都是由2 * 5得来的,相当于要求n!分解成质因子后2 * 5的数目,由于n中2的数目肯定是要大于5的数目,所以我们只需要求出n!中5的数目。C++代码class Solution {public: int trailingZeroes(int n) { ...

Day15-【Java SE进阶】IO流(一):File、IO流概述、File文件对象的创建、字节输入输出流FileInputStream FileoutputStream、释放资源。_outputstream释放-程序员宅基地

文章浏览阅读992次,点赞27次,收藏15次。UTF-8是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节。文件字节输入流:每次读取多个字节到字节数组中去,返回读取的字节数量,读取完毕会返回-1。注意1:字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。UTF-8字符集:汉字占3个字节,英文、数字占1个字节。GBK字符集:汉字占2个字节,英文、数字占1个字节。GBK规定:汉字的第一个字节的第一位必须是1。_outputstream释放

jeecgboot重新登录_jeecg 登录自动退出-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏3次。解决jeecgboot每次登录进去都会弹出请重新登录问题,在utils文件下找到request.js文件注释这段代码即可_jeecg 登录自动退出

数据中心供配电系统负荷计算实例分析-程序员宅基地

文章浏览阅读3.4k次。我国目前普遍采用需要系数法和二项式系数法确定用电设备的负荷,其中需要系数法是国际上普遍采用的确定计算负荷的方法,最为简便;而二项式系数法在确定设备台数较少且各台设备容量差..._数据中心用电负荷统计变压器

HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板_网页设计成品百度网盘-程序员宅基地

文章浏览阅读7k次,点赞4次,收藏46次。HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业_网页设计成品百度网盘

【Jailhouse 文章】Look Mum, no VM Exits_jailhouse sr-iov-程序员宅基地

文章浏览阅读392次。jailhouse 文章翻译,Look Mum, no VM Exits!_jailhouse sr-iov

随便推点

chatgpt赋能python:Python怎么删除文件中的某一行_python 删除文件特定几行-程序员宅基地

文章浏览阅读751次。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。AI职场汇报智能办公文案写作效率提升教程 专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。_python 删除文件特定几行

Java过滤特殊字符的正则表达式_java正则表达式过滤特殊字符-程序员宅基地

文章浏览阅读2.1k次。【代码】Java过滤特殊字符的正则表达式。_java正则表达式过滤特殊字符

CSS中设置背景的7个属性及简写background注意点_background设置背景图片-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏17次。css中背景的设置至关重要,也是一个难点,因为属性众多,对应的属性值也比较多,这里详细的列举了背景相关的7个属性及对应的属性值,并附上演示代码,后期要用的话,可以随时查看,那我们坐稳开车了······1: background-color 设置背景颜色2:background-image来设置背景图片- 语法:background-image:url(相对路径);-可以同时为一个元素指定背景颜色和背景图片,这样背景颜色将会作为背景图片的底色,一般情况下设置背景..._background设置背景图片

Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏8次。Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程

PyCharm2021安装教程-程序员宅基地

文章浏览阅读10w+次,点赞653次,收藏3k次。Windows安装pycharm教程新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入下载安装PyCharm1、进入官网PyCharm的下载地址:http://www.jetbrains.com/pycharm/downl_pycharm2021

《跨境电商——速卖通搜索排名规则解析与SEO技术》一一1.1 初识速卖通的搜索引擎...-程序员宅基地

文章浏览阅读835次。本节书摘来自异步社区出版社《跨境电商——速卖通搜索排名规则解析与SEO技术》一书中的第1章,第1.1节,作者: 冯晓宁,更多章节内容可以访问云栖社区“异步社区”公众号查看。1.1 初识速卖通的搜索引擎1.1.1 初识速卖通搜索作为速卖通卖家都应该知道,速卖通经常被视为“国际版的淘宝”。那么请想一下,普通消费者在淘宝网上购买商品的时候,他的行为应该..._跨境电商 速卖通搜索排名规则解析与seo技术 pdf

推荐文章

热门文章

相关标签