- [游客] 孕妇装夏装www.go0551.com 04/07 23:38
- [游客] 不知道字符串在显存中的地址理解的对不对,计算上有没有什么好办法,请大家指教 ---------- 02/05 15:49
- [qq275537308] 写错了,是start,我想start代表的也是0,可是写成mov [bx],start 编译后成了m 02/04 17:30
- [游客] 真正拷贝的是机器指令,而不是源代码。jmp本质是基于位移的,而不是地址的。知道这两点,这个题目就绕过 02/03 16:08
- [crazyman] 对头。 02/03 16:00
- [crazyman] 知道错误在哪就是进步了。 博主加油。 02/03 16:00
- [crazyman] [bx]里我曾用stack,编译后成了mov bx,0000,不知何解,请赐教 ======== 02/03 15:59
- [crazyman] 从逻辑层上看,博主的思维方式没什么可说的。呵呵 我倒是没想这么多,分了块就做家伙了。 02/03 14:17
- [lwbfq] 博主推测的很对,继续努力。 01/13 14:15
- [coco] 每章的检测题必须做完才能进行下一章的学习. 01/12 23:54
[2009-02-04 17:33] 实验9
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov ah,80 //计算字符串输出的地址,第13行31-47字节
mov cl,12
mul cl
add ax,30
mov di,ax
mov ax,0b800h //用ES:[di]指向显存
mov es,ax
mov cx,16
s: mov al,ds:[s...
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov ah,80 //计算字符串输出的地址,第13行31-47字节
mov cl,12
mul cl
add ax,30
mov di,ax
mov ax,0b800h //用ES:[di]指向显存
mov es,ax
mov cx,16
s: mov al,ds:[s...
阅读全文 |
评论次数(1) |
浏览次数(577) |
所属类型(汇编作业)
[2009-01-26 21:29] 实验8
分析结果:
能够正常返回。
主要考察根据位移转移的本质,程序把s2处的jmp short s1拷贝到了s处,其实拷贝到的真实结果是jmp -A,也就是用-A来修改IP,而在S:处IP地址为A,所以S处的指令实际上成了jmp(A-A)= jmp 0000,指向的刚好是 mov ax,4c00h,执行下来程序就正常返回了。...
能够正常返回。
主要考察根据位移转移的本质,程序把s2处的jmp short s1拷贝到了s处,其实拷贝到的真实结果是jmp -A,也就是用-A来修改IP,而在S:处IP地址为A,所以S处的指令实际上成了jmp(A-A)= jmp 0000,指向的刚好是 mov ax,4c00h,执行下来程序就正常返回了。...
阅读全文 |
评论次数(1) |
浏览次数(696) |
所属类型(汇编作业)
[2009-01-26 20:10] 检测点9.3
add cx,1
还是利用loop指令先要cx-1的特点。在cx里加1,要是原来的值为0,运行到loop时,会先-1就CX=0,向下执行,由于执行了一条inc bx,所以后面要dec bx得到的才是正确地址
这里不能jcxz,用了跳转到OK时,会dec bx,得到的地址就会差1...
还是利用loop指令先要cx-1的特点。在cx里加1,要是原来的值为0,运行到loop时,会先-1就CX=0,向下执行,由于执行了一条inc bx,所以后面要dec bx得到的才是正确地址
这里不能jcxz,用了跳转到OK时,会dec bx,得到的地址就会差1...
阅读全文 |
评论次数(1) |
浏览次数(683) |
所属类型(汇编作业)
[2009-01-26 20:04] 检测点9.2
S:mov cl,[bx]
mov ch,0
jcxz ok
inc bx
利用jcxz特性,把每个字节的内容放在cx里,如果为0,则跳转到后面用dx记录下bx的值,即地址
由于查找的是字节,所以把CX分成CL\CH装(这点是看了9.3才反应过来的,以前都是用mov cx,[bx],惭愧~)...
mov ch,0
jcxz ok
inc bx
利用jcxz特性,把每个字节的内容放在cx里,如果为0,则跳转到后面用dx记录下bx的值,即地址
由于查找的是字节,所以把CX分成CL\CH装(这点是看了9.3才反应过来的,以前都是用mov cx,[bx],惭愧~)...
阅读全文 |
评论次数(1) |
浏览次数(676) |
所属类型(汇编作业)
[2009-01-26 19:59] 检测点9.1
(1)data里把1号字单元定义为0。
因为start在cs段里为偏移地址0,而后面用JMP WORD PTR
(2)mov [bx],0
mov [bx+2],cs
jmp dword 用一个双字的高位修改段地址,所以CS放在[bx+2],偏移地址放在低位。
[bx]里我曾用start,编译后成了mov bx,0000,不知何解,请赐教
(3)cs:0006
ip:00be
还是jmp dword的用法...
因为start在cs段里为偏移地址0,而后面用JMP WORD PTR
(2)mov [bx],0
mov [bx+2],cs
jmp dword 用一个双字的高位修改段地址,所以CS放在[bx+2],偏移地址放在低位。
[bx]里我曾用start,编译后成了mov bx,0000,不知何解,请赐教
(3)cs:0006
ip:00be
还是jmp dword的用法...
阅读全文 |
评论次数(2) |
浏览次数(649) |
所属类型(汇编作业)
[2009-01-23 21:19] 第8章 实验7
assume cs:code,ds:data,ss:stack
data segment
db 21 dup ('1984')//这里我用统一数据代替了^^
dd 21 dup (5000)
dw 21 dup (100)
data ends
stack segment
dw 16 dup (0)
stack ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov...
data segment
db 21 dup ('1984')//这里我用统一数据代替了^^
dd 21 dup (5000)
dw 21 dup (100)
data ends
stack segment
dw 16 dup (0)
stack ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov...
阅读全文 |
评论次数(1) |
浏览次数(665) |
所属类型(汇编作业)
[2009-01-12 19:21] 6.1
(1)mov cs:[bx],ax
(2)mov ax,cs
mov sp,26
pop cs:[bx]
每次都错1题,都36小时了……
推测大概是段的长度那题错了,我测试过申请过不同大小的空间做了实验。从第四章里看来,程序加载进内存后,每个段段地址不同,但都用0做偏移地址。那么一个段的结尾偏移地址也应该是0,段的大小应该是N+(16-N)这样子,比如DATA段有50字节数据,在内存里占32h,但会分配40h的空间给这段
感觉从这一章开始,很多东西确实要吃的相当透,后面才能继续,不然到了后面举步维艰……...
(2)mov ax,cs
mov sp,26
pop cs:[bx]
每次都错1题,都36小时了……
推测大概是段的长度那题错了,我测试过申请过不同大小的空间做了实验。从第四章里看来,程序加载进内存后,每个段段地址不同,但都用0做偏移地址。那么一个段的结尾偏移地址也应该是0,段的大小应该是N+(16-N)这样子,比如DATA段有50字节数据,在内存里占32h,但会分配40h的空间给这段
感觉从这一章开始,很多东西确实要吃的相当透,后面才能继续,不然到了后面举步维艰……...
阅读全文 |
评论次数(2) |
浏览次数(647) |
所属类型(汇编作业)
[2008-11-28 17:40] 再来!
生活的琐事一点一点消磨着意志。停在第六章已经快一个月了,根本没什么多余的时间与精力来学习,还好前几章学的够扎实,回顾一下还都能捡回来,但始终有种自己背弃了自己的感觉...
今天去论坛上看了很多人的帖子,自己很惭愧,但又一次充满了力量与信心。既然害怕失败、害怕挫折,当初为什么要来?!来这里是追求知识的真谛,还是追求“通过监测点”的“成就感”?!写到着这里我也觉得豁然开朗了,呵呵
打算用一个星期时间复习前面的章节,把关键知识点重新掌握,再继续学习。感觉我最大的问题就是连贯和意志力,以后要加强学习的规律性和连贯性,调整好心态,我会回来的,我的快乐也会回来的,加油!...
今天去论坛上看了很多人的帖子,自己很惭愧,但又一次充满了力量与信心。既然害怕失败、害怕挫折,当初为什么要来?!来这里是追求知识的真谛,还是追求“通过监测点”的“成就感”?!写到着这里我也觉得豁然开朗了,呵呵
打算用一个星期时间复习前面的章节,把关键知识点重新掌握,再继续学习。感觉我最大的问题就是连贯和意志力,以后要加强学习的规律性和连贯性,调整好心态,我会回来的,我的快乐也会回来的,加油!...
阅读全文 |
评论次数(2) |
浏览次数(541) |
所属类型(默认类型)
[2008-10-15 14:11] 3.2
(1)
mov bx,2000H
mov ss,bx
mov sp,0010H
(2)
mov bx,1000H
mov ss,bx
mov sp,0000H
把一段空间当做栈段使用,完全是我们编程时的一种安排,CPU并不知道这种安排,除非我们把SS:SP指向某段内存空间,同样,代码段和数据段的安排也是同一道理。
第一题中,我们可以把20000-2000F看做一个栈段,把10000-1000F中的数据用push指令压到栈里,就实现了逆序拷贝。
所以把10000-1000F设为数据段,即DS=1000,把20000-2000F设为栈段,即SS=2000。SP值呢?...
mov bx,2000H
mov ss,bx
mov sp,0010H
(2)
mov bx,1000H
mov ss,bx
mov sp,0000H
把一段空间当做栈段使用,完全是我们编程时的一种安排,CPU并不知道这种安排,除非我们把SS:SP指向某段内存空间,同样,代码段和数据段的安排也是同一道理。
第一题中,我们可以把20000-2000F看做一个栈段,把10000-1000F中的数据用push指令压到栈里,就实现了逆序拷贝。
所以把10000-1000F设为数据段,即DS=1000,把20000-2000F设为栈段,即SS=2000。SP值呢?...
阅读全文 |
评论次数(1) |
浏览次数(482) |
所属类型(汇编作业)
[2008-10-12 15:51] 3.1
(1)
2662
E626
E626
2662
D6E6
FD48
2C14
0000
00E6
0000
0026
000C
//主要是内存中字单元和字节单元的操作
(2)
1、执行顺序:
mov ax,6622 执行后ax=6622 cs=2000 ip=0003 ds=1000
jmp 0ff0:0100 执行后ax=6622 cs=0ff0 ip=0100 ds=1000
mov ax,2000 执行后ax=2000 cs=0ff0 ip=0103 ds=1000
mov ds,ax ...
2662
E626
E626
2662
D6E6
FD48
2C14
0000
00E6
0000
0026
000C
//主要是内存中字单元和字节单元的操作
(2)
1、执行顺序:
mov ax,6622 执行后ax=6622 cs=2000 ip=0003 ds=1000
jmp 0ff0:0100 执行后ax=6622 cs=0ff0 ip=0100 ds=1000
mov ax,2000 执行后ax=2000 cs=0ff0 ip=0103 ds=1000
mov ds,ax ...
阅读全文 |
评论次数(1) |
浏览次数(503) |
所属类型(汇编作业)
『 查看更多文章 』