assume cs:code
data segment
db '9','/','8','/','7',' ','4',':','2',':','0'
data ends
code segment
start: mov ax,data
mov ds,ax
mov bx,0
mov ax,0b800h
mov es,ax
mov di,10*160+32*2
mov cx,11
s: push cx
mov al,[bx]
cmp al,47
ja s0
s1: mov byte ptr es:[di+4],a...
- [younggay] 程序正确! 06/18 14:52
- [e30614007] 呵呵 似乎不用那么麻烦啊 我试过的啊 直接-r 然后dos环境出现逻辑地址,在其后直接写 05/02 09:29
- [mess] 好记性不如烂笔头,俺喜欢o(∩_∩)o... 04/17 09:23
- [游客] 我认为在debug下: 用 a 命令输入指令 mov ax,ds:[0] (!!!带段前缀!!!) 04/14 23:44
- [wdm] 这话怎么这么眼熟呢?呵呵呵 高手不敢当,希望对学习的兄弟们有那么一点点帮助就行了。 其中不乏认识 04/11 12:43
- [wdm] 高手说的就是一个字:对! 呵呵 04/08 15:28
- [taotling] 几次修改IP的那题,为什么明明是修改六次,却选的是2? 04/01 16:35
- [游客] 楼主不定哪天也成为高手了。。。 04/01 16:19
- [游客] 分析的确实不错 不过这些最好自己体会出来才有进步 03/31 22:32
[2008-06-17 19:55] 【实验14】
阅读全文 |
评论次数(1) |
浏览次数(611) |
所属类型(默认类型)
[2008-04-14 15:55] debug下输入MOV AX,DS:[0]
debug中测试的时候不要输入DS后面的“:”号!...
阅读全文 |
评论次数(2) |
浏览次数(689) |
所属类型(默认类型)
[2008-04-14 14:28] 高手笔记【6】
在Intel8086环境下,对指令mov ax,[bx]描述错误的是_____。 4
1、 指令中,源操作数的段地址默认为ds中的内容
2、 指令中,源操作数的偏移地址为bx中的内容
3、 指令执行后,(al)=((ds)*16+(bx)),(ah)=((ds)*16+(bx)+1)
4、 指令执行后,((ds)*16+(bx))=(al),((ds)*16+(bx)+1)=(ah)
assume cs:code
code segment
start:mov ax,code
mov ds,ax
...
1、 指令中,源操作数的段地址默认为ds中的内容
2、 指令中,源操作数的偏移地址为bx中的内容
3、 指令执行后,(al)=((ds)*16+(bx)),(ah)=((ds)*16+(bx)+1)
4、 指令执行后,((ds)*16+(bx))=(al),((ds)*16+(bx)+1)=(ah)
assume cs:code
code segment
start:mov ax,code
mov ds,ax
...
阅读全文 |
评论次数(1) |
浏览次数(594) |
所属类型(默认类型)
[2008-04-14 13:02] 高手笔记【5】
实验4
如此编程
assume cs:code
code SEGMENT
mov bx,0
mov cx,64
mov ax,0020h
mov ds,ax
s:mov [bx],bx
inc bx
loop s
mov ax,4c00h
int 21h
code ENDS
end
1.结果正确不代表过程正确。
逻辑错误很多时候会成长为致命错误。
2.带[]的寄存器名称在80x86中只能是作为基址...
如此编程
assume cs:code
code SEGMENT
mov bx,0
mov cx,64
mov ax,0020h
mov ds,ax
s:mov [bx],bx
inc bx
loop s
mov ax,4c00h
int 21h
code ENDS
end
1.结果正确不代表过程正确。
逻辑错误很多时候会成长为致命错误。
2.带[]的寄存器名称在80x86中只能是作为基址...
阅读全文 |
评论次数(0) |
浏览次数(683) |
所属类型(默认类型)
[2008-04-10 20:44] 高手笔记【4】
cs ds ss区别
这三个段地址都可以指向任何空间(不考虑程序运行结果)。但是,cs是代码段寄存器,cs:ip共同指向的数据被cpu看做是程序指令,也只有这些指令才能得到运行,也就是我们通常意义上的程序;ds一般指向数据,没有什么特殊的意义;而ss是栈的段地址,ss:sp共同作用,进行栈操作后的栈空间的定位。
替换使用大体上说是不行的。因为cs和ss都有默认行为的,cpu运行就会自动使用这些寄存器,而ds的要求就要灵活一点了。...
这三个段地址都可以指向任何空间(不考虑程序运行结果)。但是,cs是代码段寄存器,cs:ip共同指向的数据被cpu看做是程序指令,也只有这些指令才能得到运行,也就是我们通常意义上的程序;ds一般指向数据,没有什么特殊的意义;而ss是栈的段地址,ss:sp共同作用,进行栈操作后的栈空间的定位。
替换使用大体上说是不行的。因为cs和ss都有默认行为的,cpu运行就会自动使用这些寄存器,而ds的要求就要灵活一点了。...
阅读全文 |
评论次数(1) |
浏览次数(685) |
所属类型(默认类型)
[2008-04-07 21:18] 高手笔记【3】
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是_____。
1、 0000H
2、 0001H
3、 FFFFH
4、 FFFEH
KEY:栈的sp指向栈顶的下一存储单元,所以,要使用整个段,理论上指向的位置应该是(FFFFH+1H),我们知道这样的话超过了段的最大值FFFFH,因此,出现了【段内环绕】,所以此时sp指向了0H的位置。...
1、 0000H
2、 0001H
3、 FFFFH
4、 FFFEH
KEY:栈的sp指向栈顶的下一存储单元,所以,要使用整个段,理论上指向的位置应该是(FFFFH+1H),我们知道这样的话超过了段的最大值FFFFH,因此,出现了【段内环绕】,所以此时sp指向了0H的位置。...
阅读全文 |
评论次数(1) |
浏览次数(628) |
所属类型(默认类型)
[2008-03-31 21:16] 高手笔记【2】
下列关于8086CPU的工作原理的描述错误的是_____。
1、 汇编程序员可以通过对各种寄存器中内容的修改实现对CPU的控制。
2、 CPU在访问内存时,采用“段地址*16+偏移地址”的形式给出要访问的内存单元的物理地址。
3、 任意时刻,CS:IP指向的内容即是此刻CPU正在执行的指令。
4、 传送指令能够更改所有通用寄存器的内容。
4是正确的,CS,IP并不是通用寄存器,通用寄存器只包括(AX、BX、CX、DX)
3的描述是错误的,因为当CPU取指到指令缓存器后,CS,IP就自动指向下一条指令,然后CPU再执行刚取到指令缓存器的指令,并不是当...
1、 汇编程序员可以通过对各种寄存器中内容的修改实现对CPU的控制。
2、 CPU在访问内存时,采用“段地址*16+偏移地址”的形式给出要访问的内存单元的物理地址。
3、 任意时刻,CS:IP指向的内容即是此刻CPU正在执行的指令。
4、 传送指令能够更改所有通用寄存器的内容。
4是正确的,CS,IP并不是通用寄存器,通用寄存器只包括(AX、BX、CX、DX)
3的描述是错误的,因为当CPU取指到指令缓存器后,CS,IP就自动指向下一条指令,然后CPU再执行刚取到指令缓存器的指令,并不是当...
阅读全文 |
评论次数(3) |
浏览次数(691) |
所属类型(默认类型)
[2008-03-27 21:32] 高手笔记【1】
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为(),最大为()
个人的想法是,假设SA为最大,EA为0,那么经过X16移位后,可以推断出基础地址=物理地址 那么就可以得到最大的SA=2000H 但是在计算最小值的时候 我就遇见了麻烦 假设SA为最小,也就是0(0是任何自然数的倍数),所以得到的SA就为0000H,但是这个与参考答案上的1001H有很大的差异,不知道是否是我的哪个知识点没有思考到,或者哪个环节没记忆清楚,谢谢指教。
想想,如果SA为0000H,那么再给一个偏移地址是多少,我们才能使最终的...
个人的想法是,假设SA为最大,EA为0,那么经过X16移位后,可以推断出基础地址=物理地址 那么就可以得到最大的SA=2000H 但是在计算最小值的时候 我就遇见了麻烦 假设SA为最小,也就是0(0是任何自然数的倍数),所以得到的SA就为0000H,但是这个与参考答案上的1001H有很大的差异,不知道是否是我的哪个知识点没有思考到,或者哪个环节没记忆清楚,谢谢指教。
想想,如果SA为0000H,那么再给一个偏移地址是多少,我们才能使最终的...
阅读全文 |
评论次数(0) |
浏览次数(588) |
所属类型(默认类型)