①书面中数据如果为16进制,注意在后面加 H ;
②立即数首位为字母时,应该以 0 开头;
③栈空时,POP不会影响栈中的数据。...
- [caoyang] 是哦,学长你太聪明了,O(∩_∩)O~ 07/08 19:56
- [caoyang] 好吓人 07/08 19:55
- [fpamc] Me.song 07/08 04:49
- [fpamc] 不加0,编译器会被认为是标号。 07/08 04:48
- [caoyang] 哦,我没动脑子就照书抄了,学长,ffff前面有0和没有0,CPU处理起来会不会是不一样的啊,具体是什 07/07 22:13
- [caoyang] 学长,你的昵称叫什么啊,O(∩_∩)O~ 07/07 22:08
- [fpamc] 注意,H 和不能以字母开头做立即数。譬如mov ax,ffffh是不对的。 前面要加0 07/07 22:04
- [fpamc] 是。 07/07 22:02
- [caoyang] 哦,pop 只是读数据,虽然地址会回绕,但是不会改变数据。 学长,chinatree让我玩 07/07 21:53
- [fpamc] 当栈空时,pop后, sp会+2。此时并不影响栈中数据。 当push时,会覆盖原有数据 这 07/07 19:48
[2012-07-07 22:21] 24 注意
阅读全文 |
评论次数(0) |
浏览次数(247) |
所属类型(学习日记)
[2012-07-07 21:55] 实验2 用机器指令和汇编指令编程
在执行修改SS的指令后,下一条指令也紧跟着被执行。从DEBUG下观察,不仅仅是紧跟着修改SP的指令会被执行,只要是紧跟在修改SS的指令后的一条指令,就会紧跟着被执行。
(1)
mov ax,ffff
mov ds,ax
mov ax,2200
mov ss,ax
mov sp,0100
mov ax,[0] ax= 5BEAH
add ax,[2] ax= 5CCAH
mov bx,[4] bx= 30F0H
add bx,[6] bx= 6028H
push ax sp= 00FEH;修改的内存单元地址220FEH...
(1)
mov ax,ffff
mov ds,ax
mov ax,2200
mov ss,ax
mov sp,0100
mov ax,[0] ax= 5BEAH
add ax,[2] ax= 5CCAH
mov bx,[4] bx= 30F0H
add bx,[6] bx= 6028H
push ax sp= 00FEH;修改的内存单元地址220FEH...
阅读全文 |
评论次数(4) |
浏览次数(370) |
所属类型(汇编作业)
[2012-07-07 14:33] 24 检测点 3.2
(1)
mov ax,2000
mov ss,ax
mov sp,0010
(2)
mov ax,1000
mov ss,ax
mov sp,0...
mov ax,2000
mov ss,ax
mov sp,0010
(2)
mov ax,1000
mov ss,ax
mov sp,0...
阅读全文 |
评论次数(2) |
浏览次数(310) |
所属类型(汇编作业)
[2012-07-07 14:26] 24 汇编3.6~3.10叙述
一、CPU提供的一种重要机制——栈
CPU提供了一种很重要的机制——栈,它的特点是:后进先出。
为了实现这种机制,又提供了两种操作:入栈和出栈。为此,引出了堆栈段寄存器SS和栈顶指针寄存器SP,任意时刻SS:SP都指向栈顶,SS中存放栈的段地址,SP中存放偏移地址,也就是说任意时刻栈顶是可以确定的,但是CPU却没有提供栈大小的确定基址,这需要我们自己注意,注意在入栈栈满的时候会不会溢出栈顶,出栈栈空的时候会不会超出栈底,这些都是要注意的。
二、新学的段——栈段
既然CPU提供了这样的机制,那么在内存中是怎样体现的。CPU在内存中,开辟地址连续(不大于64KB...
CPU提供了一种很重要的机制——栈,它的特点是:后进先出。
为了实现这种机制,又提供了两种操作:入栈和出栈。为此,引出了堆栈段寄存器SS和栈顶指针寄存器SP,任意时刻SS:SP都指向栈顶,SS中存放栈的段地址,SP中存放偏移地址,也就是说任意时刻栈顶是可以确定的,但是CPU却没有提供栈大小的确定基址,这需要我们自己注意,注意在入栈栈满的时候会不会溢出栈顶,出栈栈空的时候会不会超出栈底,这些都是要注意的。
二、新学的段——栈段
既然CPU提供了这样的机制,那么在内存中是怎样体现的。CPU在内存中,开辟地址连续(不大于64KB...
阅读全文 |
评论次数(8) |
浏览次数(364) |
所属类型(汇编作业)
[2012-07-05 23:05] 22 检测点 3.1
(1)
mov ax,1
mov ds,ax
mov ax,[0000] ax= 2662H
mov bx,[0001] bx= e626H
mov ax,bx ax= e626H
mov ax,[0000] ax= 2662H
mov bx,[0002] bx= d6e6H
add ax,bx ax= fd48H
add ax,[0004] ax= 2c14H
mov ax,0 ax= 0H
mov al,[0002] ax= 00e6H
mov bx,0 bx= 0H
mov bl,[00...
mov ax,1
mov ds,ax
mov ax,[0000] ax= 2662H
mov bx,[0001] bx= e626H
mov ax,bx ax= e626H
mov ax,[0000] ax= 2662H
mov bx,[0002] bx= d6e6H
add ax,bx ax= fd48H
add ax,[0004] ax= 2c14H
mov ax,0 ax= 0H
mov al,[0002] ax= 00e6H
mov bx,0 bx= 0H
mov bl,[00...
阅读全文 |
评论次数(1) |
浏览次数(274) |
所属类型(汇编作业)
[2012-07-05 22:36] 22 汇编3.1~3.5叙述
一、新学到的段——数据段
从CPU访问内存的角度学习,了解到CPU可以为内存划分专门存放数据的段,称作数据段。它是地址连续、起始地址为16的倍数的一系列内存单元,最大为64KB。
在访问内存时,必然会有物理地址问题,从前面学习过程中知道,物理地址由段地址和偏移地址构成,那么,对于数据段也有同样的问题。8086CPU默认将段地址存放在数据段寄存器DS中,也即,在指令中涉及到内存地址时,若没有指明段地址,CPU将默认从数据段寄存器DS中取出的数据位数据段的段地址。在表示时,用“[...]”表示,方括号内的数据表示内存单元的偏移地址。
二、数据的传送
8086CP...
从CPU访问内存的角度学习,了解到CPU可以为内存划分专门存放数据的段,称作数据段。它是地址连续、起始地址为16的倍数的一系列内存单元,最大为64KB。
在访问内存时,必然会有物理地址问题,从前面学习过程中知道,物理地址由段地址和偏移地址构成,那么,对于数据段也有同样的问题。8086CPU默认将段地址存放在数据段寄存器DS中,也即,在指令中涉及到内存地址时,若没有指明段地址,CPU将默认从数据段寄存器DS中取出的数据位数据段的段地址。在表示时,用“[...]”表示,方括号内的数据表示内存单元的偏移地址。
二、数据的传送
8086CP...
阅读全文 |
评论次数(1) |
浏览次数(299) |
所属类型(汇编作业)
[2012-07-04 23:54] 实验1 查看CPU和内存,用机器指令和汇编指令编程
debug中的常用指令:
① r 查看、修改CPU的寄存器;
② d 查看内存;
③ e 修改内存;
④ u 反汇编;
⑤ t 执行一条指令;
⑥ a 在debug下按照汇编指令格式输入指令;
⑦ p 有点破规,从网上查的,这条指令在执行时,是执行一个过程,是单步执行stepover,和t命令不同,t命令是单步跟踪stepin。
在实验中,了解到在物理地址ffff0H开始的一系列内存单元中,包含了写在ROM中的生产日期。物理地址b8000H开始是显存。而且在u命令与e命令写入程序时,感受到了汇编语言与机器语言相比,要便捷很多。...
① r 查看、修改CPU的寄存器;
② d 查看内存;
③ e 修改内存;
④ u 反汇编;
⑤ t 执行一条指令;
⑥ a 在debug下按照汇编指令格式输入指令;
⑦ p 有点破规,从网上查的,这条指令在执行时,是执行一个过程,是单步执行stepover,和t命令不同,t命令是单步跟踪stepin。
在实验中,了解到在物理地址ffff0H开始的一系列内存单元中,包含了写在ROM中的生产日期。物理地址b8000H开始是显存。而且在u命令与e命令写入程序时,感受到了汇编语言与机器语言相比,要便捷很多。...
阅读全文 |
评论次数(2) |
浏览次数(292) |
所属类型(汇编作业)
[2012-07-04 19:27] 21 检测点 2.3
①取指令MOV AX,BX时,需要IP内容作偏移地址,需要修改一次IP;
②当将上一指令取到指令缓冲器中时,需要修改IP(加上所取的指令长度),从而CS:IP指向指令SUB AX,AX的起始地址;
③当指令SUB AX,AX取入指令缓冲器时,需要修改IP,使得CS:IP指向指令JMP AX的起始地址;
④执行转移指令JMP AX时,修改了IP内容。
共4次。最后IP中的值是0000H。
补充:
学到新指令SUB *,* 可以是通用逗号后面的寄存器内容减去前面寄存器内容的结果存入前面寄存器。...
②当将上一指令取到指令缓冲器中时,需要修改IP(加上所取的指令长度),从而CS:IP指向指令SUB AX,AX的起始地址;
③当指令SUB AX,AX取入指令缓冲器时,需要修改IP,使得CS:IP指向指令JMP AX的起始地址;
④执行转移指令JMP AX时,修改了IP内容。
共4次。最后IP中的值是0000H。
补充:
学到新指令SUB *,* 可以是通用逗号后面的寄存器内容减去前面寄存器内容的结果存入前面寄存器。...
阅读全文 |
评论次数(3) |
浏览次数(276) |
所属类型(汇编作业)
[2012-07-04 18:59] 21 汇编2.9~2.12叙述
一、段寄存器
CPU在访问内存单元时,需要物理地址,而物理地址由段地址和偏移地址经过运算形成。那么段地址、偏移地址存储在哪些部件中就是要了解的。
首先要了解的是段地址的存放部件,段寄存器。8086CPU的段寄存器有:CS、DS、ES、SS。它们都是16位寄存器。
二、新学的段
CPU可以将内存地址空间分为一个个段,每个段都是地址连续、基地址为16的倍数的一系列存储单元。本次要学习的段是代码段。
有两个相关的,而且特别重要的寄存器是,代码段寄存器CS和指令指针寄存器IP。分别存放了代码段的段地址和偏移地址。也就是说,CS的内容乘以16加上IP中的内容就是要执...
CPU在访问内存单元时,需要物理地址,而物理地址由段地址和偏移地址经过运算形成。那么段地址、偏移地址存储在哪些部件中就是要了解的。
首先要了解的是段地址的存放部件,段寄存器。8086CPU的段寄存器有:CS、DS、ES、SS。它们都是16位寄存器。
二、新学的段
CPU可以将内存地址空间分为一个个段,每个段都是地址连续、基地址为16的倍数的一系列存储单元。本次要学习的段是代码段。
有两个相关的,而且特别重要的寄存器是,代码段寄存器CS和指令指针寄存器IP。分别存放了代码段的段地址和偏移地址。也就是说,CS的内容乘以16加上IP中的内容就是要执...
阅读全文 |
评论次数(2) |
浏览次数(271) |
所属类型(汇编作业)
[2012-07-04 18:01] 21 检测点2.2
(1)给定段地址为0001H,紧通过变化偏移地址寻址,CPU的寻址范围为00010H到1000FH。
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为1001H,最大为2000H。
要使20000H找不到,段地址应该大于2000H,或者小于1001H。...
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为1001H,最大为2000H。
要使20000H找不到,段地址应该大于2000H,或者小于1001H。...
阅读全文 |
评论次数(6) |
浏览次数(277) |
所属类型(汇编作业)
『 查看更多文章 』