微机原理与应用精炼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

智能推荐

51单片机的中断系统_51单片机中断篇-程序员宅基地

文章浏览阅读3.3k次,点赞7次,收藏39次。CPU 执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对异常情况或特殊请求进行处理,处理完毕后再返回现行程序断点处,继续执行原程序。void 函数名(void) interrupt n using m {中断函数内容 //尽量精简 }编译器会把该函数转化为中断函数,表示中断源编号为n,中断源对应一个中断入口地址,而中断入口地址的内容为跳转指令,转入本函数。using m用于指定本函数内部使用的工作寄存器组,m取值为0~3。该修饰符可省略,由编译器自动分配。_51单片机中断篇

oracle项目经验求职,网络工程师简历中的项目经验怎么写-程序员宅基地

文章浏览阅读396次。项目经验(案例一)项目时间:2009-10 - 2009-12项目名称:中驰别克信息化管理整改完善项目描述:项目介绍一,建立中驰别克硬件档案(PC,服务器,网络设备,办公设备等)二,建立中驰别克软件档案(每台PC安装的软件,财务,HR,OA,专用系统等)三,能过建立的档案对中驰别克信息化办公环境优化(合理使用ADSL宽带资源,对域进行调整,对文件服务器进行优化,对共享打印机进行调整)四,优化完成后..._网络工程师项目经历

LVS四层负载均衡集群-程序员宅基地

文章浏览阅读1k次,点赞31次,收藏30次。LVS:Linux Virtual Server,负载调度器,内核集成, 阿里的四层SLB(Server Load Balance)是基于LVS+keepalived实现。NATTUNDR优点端口转换WAN性能最好缺点性能瓶颈服务器支持隧道模式不支持跨网段真实服务器要求anyTunneling支持网络private(私网)LAN/WAN(私网/公网)LAN(私网)真实服务器数量High (100)High (100)真实服务器网关lvs内网地址。

「技术综述」一文道尽传统图像降噪方法_噪声很大的图片可以降噪吗-程序员宅基地

文章浏览阅读899次。https://www.toutiao.com/a6713171323893318151/作者 | 黄小邪/言有三编辑 | 黄小邪/言有三图像预处理算法的好坏直接关系到后续图像处理的效果,如图像分割、目标识别、边缘提取等,为了获取高质量的数字图像,很多时候都需要对图像进行降噪处理,尽可能的保持原始信息完整性(即主要特征)的同时,又能够去除信号中无用的信息。并且,降噪还引出了一..._噪声很大的图片可以降噪吗

Effective Java 【对于所有对象都通用的方法】第13条 谨慎地覆盖clone_为继承设计类有两种选择,但无论选择其中的-程序员宅基地

文章浏览阅读152次。目录谨慎地覆盖cloneCloneable接口并没有包含任何方法,那么它到底有什么作用呢?Object类中的clone()方法如何重写好一个clone()方法1.对于数组类型我可以采用clone()方法的递归2.如果对象是非数组,建议提供拷贝构造器(copy constructor)或者拷贝工厂(copy factory)3.如果为线程安全的类重写clone()方法4.如果为需要被继承的类重写clone()方法总结谨慎地覆盖cloneCloneable接口地目的是作为对象的一个mixin接口(详见第20_为继承设计类有两种选择,但无论选择其中的

毕业设计 基于协同过滤的电影推荐系统-程序员宅基地

文章浏览阅读958次,点赞21次,收藏24次。今天学长向大家分享一个毕业设计项目基于协同过滤的电影推荐系统项目运行效果:项目获取:https://gitee.com/assistant-a/project-sharing21世纪是信息化时代,随着信息技术和网络技术的发展,信息化已经渗透到人们日常生活的各个方面,人们可以随时随地浏览到海量信息,但是这些大量信息千差万别,需要费事费力的筛选、甄别自己喜欢或者感兴趣的数据。对网络电影服务来说,需要用到优秀的协同过滤推荐功能去辅助整个系统。系统基于Python技术,使用UML建模,采用Django框架组合进行设

随便推点

你想要的10G SFP+光模块大全都在这里-程序员宅基地

文章浏览阅读614次。10G SFP+光模块被广泛应用于10G以太网中,在下一代移动网络、固定接入网、城域网、以及数据中心等领域非常常见。下面易天光通信(ETU-LINK)就为大家一一盘点下10G SFP+光模块都有哪些吧。一、10G SFP+双纤光模块10G SFP+双纤光模块是一种常规的光模块,有两个LC光纤接口,传输距离最远可达100公里,常用的10G SFP+双纤光模块有10G SFP+ SR、10G SFP+ LR,其中10G SFP+ SR的传输距离为300米,10G SFP+ LR的传输距离为10公里。_10g sfp+

计算机毕业设计Node.js+Vue基于Web美食网站设计(程序+源码+LW+部署)_基于vue美食网站源码-程序员宅基地

文章浏览阅读239次。该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流项目运行环境配置:项目技术:Express框架 + Node.js+ Vue 等等组成,B/S模式 +Vscode管理+前后端分离等等。环境需要1.运行环境:最好是Nodejs最新版,我们在这个版本上开发的。其他版本理论上也可以。2.开发环境:Vscode或HbuilderX都可以。推荐HbuilderX;3.mysql环境:建议是用5.7版本均可4.硬件环境:windows 7/8/10 1G内存以上;_基于vue美食网站源码

oldwain随便写@hexun-程序员宅基地

文章浏览阅读62次。oldwain随便写@hexun链接:http://oldwain.blog.hexun.com/ ...

渗透测试-SQL注入-SQLMap工具_sqlmap拖库-程序员宅基地

文章浏览阅读843次,点赞16次,收藏22次。用这个工具扫描其它网站时,要注意法律问题,同时也比较慢,所以我们以之前写的登录页面为例子扫描。_sqlmap拖库

origin三图合一_神教程:Origin也能玩转图片拼接组合排版-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏38次。Origin也能玩转图片的拼接组合排版谭编(华南师范大学学报编辑部,广州 510631)通常,我们利用Origin软件能非常快捷地绘制出一张单独的绘图。但是,我们在论文的撰写过程中,经常需要将多种科学实验图片(电镜图、示意图、曲线图等)组合在一张图片中。大多数人都是采用PPT、Adobe Illustrator、CorelDraw等软件对多种不同类型的图进行拼接的。那么,利用Origin软件能否实..._origin怎么把三个图做到一张图上

51单片机智能电风扇控制系统proteus仿真设计( 仿真+程序+原理图+报告+讲解视频)_电风扇模拟控制系统设计-程序员宅基地

文章浏览阅读4.2k次,点赞4次,收藏51次。51单片机智能电风扇控制系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0042。_电风扇模拟控制系统设计