一、知识储备
1.8086CPU是16位结构,有16根数据线,20根地址线。16根数据线可以一次性传送16位数据,也就是两个字节(也就是一个字)的数据。
什么是字?
在这个特定计算机中,字是其用来一次性处理事务的一个固定长度的位(bit)组。一个字的位数(即字长)是计算机系统结构中的一个重要特性。在8086cpu中,内存数据分为一个字节的字节型数据和一个字的字型数据。
2.CPU要读写一个内存单元时,必须给出这个内存单元的地址,内存地址由段地址和偏移地址组成。 DS 地址寄存器存放的就是要访问数据的段地址, [address] 中address是偏移地址并且是一个具体的数。
这里注意,DS并不能直接给定一个数值。比如 mov ds,1000H 语句在8086CPU中是错的。我们只能通过寄存器去改变ds的值,比如 mov ds,ax 。
3.写几条指令,将 al 中的数据送入内存单元 10000H 中。
mov ax,1000H ;为了让ds为1000H,先让ax为1000H
mov ds,ax ;ds只接受寄存器向它传送的数据
mov al,[0] ;[0]是偏移地址,1000:0所对应的物理内存单元是10000H
4.关于mov指令 :mov ax,1000H 的含义
简单来说,给ax这个通用寄存器的值是个内存单元地址,并不是存在这个单元里面的数据。
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 对于一条指令而言,分为操作码和操作数。
上述例子中“MOV”为操作码,“A”为第一操作数,其意义为累加寄存器,“52H”为第二操作数,其意义就是立即数。通过该条程序指令可将十六进制数52H直接放入累加器中。当然也可以将立即数表示为二进制数或十进制数,图中二进制01010010 ,也就是十六进制52H。
5. CS是段地址寄存器,配合IP偏移地址寄存器,用于cpu从内存读写指令。而DS也是段地址寄存器,不同的是,它配合[ bx],用于读写内存的数据。
二、引入问题
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 三、解决问题(在windows debug下运行)
1.把数存入内存单元
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 此时代码的段地址是073F,数据的段地址也是073F,偏移地址是0100。
E命令的使用
E命令作用:改变内存单元的内容。
E命令的使用方式为:E [起始位置]。如果是连续的内存单元,直接写数字
在提示符“-”下输入以下命令:e 1000:0。
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 d命令查看内存区域的内容。d CS:IP ,若直接输入1000,则会认为1000是当前段地址的偏移地址。
这里一开始内存的数据就输错了,后面已修改。
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 2.选一段空白内存后存入汇编指令
这段内存没有数据,可以直接输入指令。
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 A命令的使用
A命令作用:输入汇编指令。
一个mov指令3字节
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 3.执行汇编指令
初始状态,r查看当前寄存器的状态
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 1.执行第一条指令
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 2.前两条指令的目的就是将ds置为1000H,内存的段地址为1000H
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 3.下一条指令是把ax里的值2c34,送入内存1000:0的位置,即物理地址10000H处
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 4.ax中的字符数据送到1000:0处,而ax中的字型数据为2c34,高8位2c,低8位是34
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 现在内存中的数为
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 5.把1000:0的地址中的数据送入bx寄存器中,bx寄存器是16位,故要在内存中找16位的数据,也就是2字节,也就是两个内存单元。
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 6.bx=bx中的数据-内存1000:2中的数据
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 7.将bx中的字符数据送到内存1000:2处。
此时内存中的数据是
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 debug验证后,如上所示
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 四、汇编符号说明
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 五、允许mov指令的操作
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作 imm是立即数,
mov 寄存器AX,3
mov 内存[a],3
mov 寄存器,内存
mov 内存,寄存器
windows debug下验证汇编指令中的mov指令传送数据一、知识储备二、引入问题三、解决问题(在windows debug下运行)四、汇编符号说明五、允许mov指令的操作