期末复习——1、汇编复习-2

第3章 寄存器(内存访问)

3.1 内存中字的存储-问题3.1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2DS和[address]-问题3.2

在这里插入图片描述

3.3字的传送

问题3.3

在这里插入图片描述
在这里插入图片描述

问题3.4

在这里插入图片描述
在这里插入图片描述

3.4 没有

3.5数据段-问题3.5

在这里插入图片描述

在这里插入图片描述

检测点3.1

在这里插入图片描述
在这里插入图片描述
(1)(题目:略)
第一空:2662H
第二空:E626H
第三空:E626H
第四空:2662H
第五空:D6E6H
第六空:FD48H
第七空:2C14H
第八空:0000H
第九空:00E6H
第十空:0000H
第十一空:0026H
第十二空:000CH
在这里插入图片描述
在这里插入图片描述
1.指令序列如下:
mov ax,6622h
jmp 0ff0:0100
mov ax,2000h
mov ds,ax
mov ax,[0008]
mov ax,[0002]
2.写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
在这里插入图片描述
数据和程序在内存中是没有区别的

3.6 栈-问题3.6

在这里插入图片描述

3.9 push pop命令-问题3.7

在这里插入图片描述

问题3.8

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

问题3.9 交换ax和bx的内容

在这里插入图片描述
在这里插入图片描述

问题3.10

在这里插入图片描述
在这里插入图片描述

3.10栈段

问题3.11

在这里插入图片描述
在这里插入图片描述

问题3.12

在这里插入图片描述

检测点3.2

在这里插入图片描述
在这里插入图片描述
mov ax,2000H
mov ss,ax
mov sp,10H
在这里插入图片描述
在这里插入图片描述

(2)
mov ax,1000H
mov ss,ax
mov sp,0H

第9章 转移指令的原理

9.1操作符offset

问题9.1

在这里插入图片描述
在这里插入图片描述

9.6转移地址在内存中的jmp指令

检测点9.1

1

在这里插入图片描述

db 0,0,0
;解题理由:为了使IP的值经跳转后变为0,则需保证ds:[bx+1]处的字型单元数据为0000H,
;所以定义3个字节型数据0就符合“应该”的要求

2

在这里插入图片描述
在这里插入图片描述
类比
在这里插入图片描述

3

在这里插入图片描述

经上机调试得出:CS=0006H,IP=00BEH

9.7jcxz指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

9.8loop指令

检测点9.3

在这里插入图片描述

在这里插入图片描述
inc cx
在这里插入图片描述

第10章 CALL 和RET指令

10.1 ret和retf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

检测点10.1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.3依据位移进行转移的call指令

在这里插入图片描述

检测点10.2

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

10.4转移的目的地址在指令中的call指令

在这里插入图片描述
pop 先出来的是ip
后出来的是cs

检测点10.3

在这里插入图片描述
要弄清这两点,就必须先清楚cpu如何执行call指令

  1. cpu读入指令call xxxx
  2. ip自增到下一条指令
  3. 向ss:sp中依次存入(cs),ip
  4. 改变(cs),ip的值,跳转

将1000:0008存入ss:sp中并跳转到1000:0009

pop ax ax=8h

add ax,ax ax=8+8=10h

pop bx bx=1000h

add ax,bx ax=10h+1000h=1010h

10.5转移地址在寄存器中的call指令

在这里插入图片描述
0BH

我的理解:
在这里插入图片描述

对于mov ax,6来讲,就是让ax=6H。
我们知道,对于call 16位reg格式来说,相当于push ip;jmp 16位reg。
那么对于call ax来讲,首先ip在运行到这句话时指向1000:3,这个时候实际上还未进行push ip的工作,这时ip将跳转到下一语句1000:5上,也就是此时ip=5,在这时,才会进行push ip的工作,那么在堆栈里存储了5这个数。
之后要进行jmp ax,而ax在第一个语句里被赋值为6,因此jmp ax就是jmp到1000:6语句中,对应的语句是mov bp,sp;要知道sp其实就是当前堆栈ss:sp中的sp,那么此时sp=5,那么bp就被赋值为5。
最后执行ax+bp,就是5+6,换算成16进制是000BH。

10.6转移地址在内存中的call 指令

在这里插入图片描述

在这里插入图片描述

检测点10.5

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ax=1
bx=0
在这里插入图片描述

10.7call和ret的配合使用

问题10.1

在这里插入图片描述
在这里插入图片描述

10.8mul

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.10参数和结果传递的问题

计算data 段中第一组数据的3次方,结果保存在后面一组dword单元中。

在这里插入图片描述

10.11批量数据的传递

将一个全是字母的字符串转化为大写。

在这里插入图片描述

10.12寄存器冲突的问题

cx冲突

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
改进:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值