求以下汇编语言问题的解答

求以下汇编语言问题的解答,问题描述如图,使用的是8086和8088版本

img

(1) MOV AL, 08H

寻址方式:立即寻址
说明:将立即数 08H 移动到 AL 寄存器。
(2) MoV [0120H], BL

寻址方式:直接寻址
EA 计算公式:EA = 0120H
段寄存器:DS
说明:将 BL 寄存器的内容移动到内存地址 0120H 处。
(3) ADD [BX], AL

寻址方式:基址寻址
EA 计算公式:EA = BX
段寄存器:DS
说明:将 AL 寄存器的值与基址寄存器 BX 指向的内存单元的值相加,结果存储在 BX 指向的内存单元中。
(4) PUSH WORD PTR [SI+0200H]

寻址方式:变址寻址
EA 计算公式:EA = SI + 0200H
段寄存器:DS
说明:将 DS:SI+0200H 处的字压入堆栈。
(5) SUB AX, [BP]

寻址方式:基址寻址
EA 计算公式:EA = BP
段寄存器:SS
说明:将 AX 寄存器的值减去基址寄存器 BP 指向的内存单元的值,结果存储在 AX 寄存器中。
(6) AND BYTE PTR [VAR1+4], DL

寻址方式:基址变址寻址
EA 计算公式:EA = (VAR1 + 4)
段寄存器:DS
说明:将内存地址 (VAR1 + 4) 处的值与 DL 寄存器的值进行逻辑与操作,结果存储在内存地址 (VAR1 + 4) 处。
(7) PUSHF

寻址方式:无
说明:将标志寄存器的内容压入堆栈。
(8) MOV ES:[BX+0100H], AL

寻址方式:基址寻址
EA 计算公式:EA = BX + 0100H
段寄存器:ES
说明:将 AL 寄存器的值移动到 ES 段中,BX+0100H 处的内存地址。
(9) ADC BYTE PTR [BP+SI+0210H], 45H

寻址方式:基址变址寻址
EA 计算公式:EA = BP + SI + 0210H
段寄存器:DS
说明:将 DS:(BP + SI + 0210H) 处的值与立即数 45H 相加,加上进位标志 CF 的值,结果存储在 DS:(BP + SI + 0210H) 处的内存地址。

(10) OR BYTE PTR [ARRY+BX+DI], CL

寻址方式:基址变址寻址
EA 计算公式:EA = ARRY + BX + DI
段寄存器:DS
说明:将 DS:(ARRY + BX + DI) 处的值与 CL 寄存器的值进行逻辑或操作,结果存储在 DS:(ARRY + BX + DI) 处的内存地址。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7666316
  • 你也可以参考下这篇文章:从键盘输入一个正整数,按数字的相反顺序输出
  • 除此之外, 这篇博客: 8086中实地址模式下的存储器寻址详解中的 数据段和附加段重叠的情形 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 要将内存某区间的一组数据复制到内存的另一区间:

    在进行数据的转移操作时,我们常常是“数据段和附加段结合在一起使用”:

    用DS:[SI]表示源数据区数据存储单元的地址,用 ES:[DI]表示目的数据区数据存储单元的地址。假设 DS=250AH,ES=2EF0H,执行以下程序段,可将源数据区的100个字(Word)数据复制到目的数据区:

    MOV CX, 100 ;在计数寄存器CX中设置循环次数  
    MOV SI,1 ;操作对象的源地址(相对地址)  
    MOV DI,1 ;操作对象的目标地址(相对地址)  
    LP1:  
    MOV DX, DS:[SI] ;将地址(段基地址+偏移地址)中存放的内容copy入DX数据寄存器中  
    MOV ES:[DI], DX ;将DX内容copy入地址为ES+DI的存储单元中  
    INC SI  
    INC DI  
    LOOP LP1 ;循环直至CX中数值为0 

    程序执行逻辑如下所示:

    注意:附加段是数据段的扩展段,我们也可以称附加段为“额外的数据段”,这说明附加段和数据段都是存储数据用的,此外,这种批量的数据操作也被称之为“串操作”。

    前面提及过在操作数据段时,BX基址寄存器、SI源变址寄存器、DI目标变址寄存器三者再结合数据段基址寄存器DS后也可以实现同上述类似的对数据段数据转移操作:

    假设 DS=250AH,BX=2EF0H,执行以下程序段,可将源数据区的100个字(Word)数据复制到目的数据区:

    MOV CX, 100 ;在计数寄存器CX中设置循环次数  
    MOV SI,1 ;操作对象的源地址(相对地址)  
    MOV DI,1 ;操作对象的目标地址(相对地址)  
    LP1:  
    MOV DX, DS:[SI] ;将“段基地址+偏移地址”copy入DX数据寄存器中  
    MOV BX:[DI], DX ;将DX内容copy入地址为BX+DI的存储单元中  
    INC SI  
    INC DI  
    LOOP LP1 ;循环直至CX中数值为0 

    其实此处BX充当了ES的作用,BX存放了数据转移的目标地址,我们使用循环不断地将数据copy至目标地址。

  • 您还可以看一下 李月喜老师的企业微信开发自建内部应用开发篇课程中的 开发文档如何阅读,如何寻求帮助,如何找到同行小节, 巩固相关知识点