为什么不能把一个字节型基本数据类型所占字节通过mov给al寄存器

设基本数据类型所占字节定义如丅:    ARRAY  DW    12,3    执行指令ADD SITYPE ARRAY,下面能实现同等功能的指令是(   )
在现行的PC机中常用的16位系统总线是(   )
现行PC中,I/O端口常用的I/O地址范围是(   )
下列关于TCP/IP协议的说法正确的是(   )

B.TCP/IP模型是四层结构模型最低层是链路层,最高层是应用层

C.网络层使用端到端的通信方式

D.传输层包括TCP协议和UDP协议其中UDP协议是HTTP协议的基础

继续查找其他问题的答案?

2.         在内存中存储时由于内存单元昰字节单元(一个单元存放一个字节),则一个字要用两个地址连续的内存单元来存放这个字的低位字节存放在低地址单元中,高位字節存放在高地址单元中

上述三条语句的作用是:把1:0)中的基本数据类型所占字节读取到al中。

mov 寄存器名 内存单元地址(偏移地址段地址在DSΦ),[  ]说明操作对象的源地址是一个内存单元,8086CPU自动取ds中的基本数据类型所占字节作为内存单元的段地址

将寄存器中的值写入到内存单え中:

ax,[0]是个相反的过程,即从内存到寄存器 && 从寄存器到内存)

1.         对于8086CPU机可以根据需要,将一组内存单元定义为一个段我们可以将一组長度为NN<=64KB)、地址连续、起始地址为16的倍数的内存单元当做专门存储基本数据类型所占字节的内存空间,从而定义了一个基本数据类型所占字节段

2.         将一段内存当做基本数据类型所占字节段,是我们在编程时的一种安排可以在具体操作的时候,用ds存放基本数据类型所占字節段的段地址在根据需要,用相关指令访问基本数据类型所占字节段中的具体单元

注意:第一幅图中的红色箭头标注的位置,是在1000FH的下面位置.

2.         栈顶超界是危险的,栈空间外的空间可能存放了有其他用途的基本数据类型所占字节、代码如果在出栈入栈时不小心将这些基本数據类型所占字节、代码意外地改写,将会引发一连串的错误

3.         8086CPU不保证我们对栈的操作不会超界。也就是说8086CPU只知道栈顶在何处(由SSSP指示),而不知道我们安排的栈空间有多大类似的,CPU只知道当前要执行的指令在何处(由CS:IP指示)而不知道要执行的指令有多少。从这两点看出8086CPU的工作机理,它只考虑当前的情况:当前的栈顶在何处、当前要执行的指令是哪一条。

4.         我们在编程的时候要自己操心栈顶超界的问题要根据可能用到的最大栈空间,来安排栈的大小防止入栈的基本数据类型所占字节太多而导致的超界;执行出栈操作的时候也要注意,以防栈空的时候继续出栈而导致的超界

1.         将一段内存当作栈段,仅仅是我们在编程时的一种安排CPU并不会由于这种安排,就在执行pushpop等棧操作指令时自动地将我们定义的栈段当作栈空间来访问

十一、  实验2:用机器指令和汇编指令编程

我要回帖

更多关于 基本数据类型所占字节 的文章

 

随机推荐