汇编语言复习.docVIP

  • 50
  • 0
  • 约9.94千字
  • 约 26页
  • 2019-04-04 发布于江苏
  • 举报
汇编语言考试复习范围: 课本的习题: P98(习题三)6-14 7.什么是堆栈操作?以下关于堆栈操作的指令执行后,SP的值是多少? PUSH AX PUSH CX PUSH DX POP AX PUSH BX POP CX POP DX 堆栈被定义为一种先进后出的数据结构,即最后进栈的元素将被最先弹出来。堆栈从一个称为栈底的位置开始,数据进入堆栈的操作称为压入(或压栈),数据退出堆栈的操作称为弹出,每进行一次弹出操作,堆栈就减少一个元素,最后一次压入的元素,称为栈顶元素,压入弹出操作都是对栈顶元素进行的堆栈的两种基本的操作。 在进行以上一系列堆栈操作后,SP指针的值是原SP-2。 用汇编语言指令实现以下操作。 将寄存器AX、BX和DX的内容相加,和放在寄存器DX中。 ADD AX,BX ADD DX,AX 用基址变址寻址方式(BX和SI)实现AL寄存器的内容和存储器单元BUF中的一个字节相加的操作,和放到AL中。 ADD AL,BYTE PTR [BX][SI] 用寄存器BX实现寄存器相对寻址方式(位移量为100H),将DX的内容和存储单元中的一个字相加,和放到存储单元中。 ADD 100H[BX],DX 用直接寻址方式(地址为0500H)实现将存储器中的一个字与立即数3ABCH相加,和放回该存储单元中。 MOV AX,3ABCH ADD [0500H],AX 用串操作指令实现将内存定义好的两个字节串BUF1和BUF2相加后,存放到另一个串BUF3中的功能。 …… MOV CX,COUNT cx存放count地址 MOV SI,OFFSET BUF1 计算出BUF1地址存入SI MOV DI,OFFSET BUF2 计算出BUF2地址存入di MOV BX,OFFSET BUF3 计算出BUF3地址存入bx AGAIN: LODSB 是将 ds:[si] 处的字节送到 AL 中, si 将随 DF 的设置 增 1(DF=0,使用 CLD 指令设置) 或者是 减 1(DF=1, 使用 STD 指令设置) 而指向下一个字节 ADD AL,[BX] 将地址[BX]中的数值与al相加 INC BX bx加1 DEC CX HYPERLINK /z/Search.e?sp=S%E8%AE%A1%E6%95%B0%E5%99%A8ch=w.search.yjjlinkcid=w.search.yjjlink \t _blank 计数器cx减1 JNZ AGAIN cx非0则循环跳转到标号AGAIN 处继续,如果cx为0则跳出循环…… 指出下列指令中,源操作数及目的操作数的寻址方式。 SUB BX,[BX+35] ;寄存器寻址、寄存器相对寻址 MOV AX,2030H ;寄存器寻址、立即寻址 SCASB ;隐含操作数为寄存器寻址和寄存器间接寻址 IN AL,40H ;寄存器寻址、立即寻址 MOV [DI+BX],AX ;基址加变址寻址、寄存器寻址 ADD AX,50H[DI] ;寄存器寻址、寄存器相对寻址 MOV AL,[1300H] ;寄存器寻址、直接寻址 MUL BL ;寄存器寻址、目的操作数为隐含寄存器寻址 已知(DS)= 1000H,(SI)= 0200H,(BX)= 0100H,(10100H)= 11H,(10101H)= 22H,(10600H)= 33H,(10601H)= 44H,(10300H)= 55H,(10301H)= 66H,(10302H)= 77H,(10303H)= 88H,试分析下列各条指令执行完后AX寄存器的内容。 MOV AX,2500H (AX)=2500H MOV AX,500H[BX] (AX)==4433H MOV AX,[300H] (AX)=6655H MOV AX,[BX] (AX)=2211H MOV AX,[BX][SI] (AX)=6655H MOV AX,[BX+SI+2] (AX)=8877H 判断下列指令是否有错,如果有错,说明理由。 SUB BL,BX ;两个操作数的宽度不一样 MOV BYTE PTR[BX],3456H ;将16位的立即数传送到一个字节的内存单元 SHL AX,CH ;移位指令的移位位数用CL给出,不能用CH。 MOV AH,[SI][DI] ;不能用两个变址寄存器来实现寻址操作 SHR AX,

文档评论(0)

1亿VIP精品文档

相关文档