- [cutebe] 相当牛,这个苦思冥想也值了。^_^ 11/30 00:00
- [parse] 如果忽略消息循环,那么操作系统加载的程序很快就执行完了,就像DOS程序一闪而过,所以CPU会空闲下来 06/30 09:04
- [游客] 楼主好厉害,挺一下! 01/19 08:43
- [游客] 很不错。 01/04 18:36
- [chinatree] 潜力贴留名,沙发。 11/08 12:58
- [youthangel] 恩,这次对了 10/30 18:56
- [fpamc] mov bx,18 在这条指令的上边是不是要加一条sub dx,dx? 10/30 10:03
- [fpamc] 对的 10/27 11:19
- [fpamc] 对的 10/27 09:00
- [fpamc] 哦,对不起,看错了。实验13也有一个7ch中断 10/27 08:52
- [游客] 现在急需一个汇编大作业。。。。。。可以么。。。。。如果今天之内看见留言 就加 1765496715 12/28 16:52
- [youthangel] 这算是对我学习的鼓励吗?谢谢!咱们这样交流就可以了 10/11 15:48
- [fpamc] 多日观察,你的学习积极性挺高的。可以来我们群了。群号:75916434 10/11 10:58
[2012-10-12 15:12] 实验十
这个实验主要练习子程序的书写,重点把握现场保护与恢复、参数的传递和返回,相当于C中的函数
掌握了这些我们以后就可以写一些大程序了,比如贪吃蛇、俄罗斯方块啊等等
1、显示字符串
comment ;
实验十 第一题
编写显示子程序,在指定位置显示指定格式的字符串
;
assume cs:code,ds:data
data segment
db 'welcome to masm!',0
data ends
...
掌握了这些我们以后就可以写一些大程序了,比如贪吃蛇、俄罗斯方块啊等等
1、显示字符串
comment ;
实验十 第一题
编写显示子程序,在指定位置显示指定格式的字符串
;
assume cs:code,ds:data
data segment
db 'welcome to masm!',0
data ends
...
阅读全文 |
评论次数(1) |
浏览次数(273) |
所属类型(汇编作业)
[2012-10-12 15:06] 第十章的检测点
10.1
①mov ax,cs
②mov ax0
10.2
当call s进入指令缓冲区后,cs:ip 会指向下一条指令
执行call s时
第一步:push ip(此时的ip=6)
第二步:修改ip
(ax)=6
10.3
但call far ptr s进入指令缓冲区,cs:ip指向1000:8
执行call far ptr s时
第一步 push cs
第二步 push ip
第三步给cs:ip 重新赋值
此时栈里是08 00 00 10
pop ax ax=8
add ax,ax ax=10
pop bx bx=1000
add ax,bx...
①mov ax,cs
②mov ax0
10.2
当call s进入指令缓冲区后,cs:ip 会指向下一条指令
执行call s时
第一步:push ip(此时的ip=6)
第二步:修改ip
(ax)=6
10.3
但call far ptr s进入指令缓冲区,cs:ip指向1000:8
执行call far ptr s时
第一步 push cs
第二步 push ip
第三步给cs:ip 重新赋值
此时栈里是08 00 00 10
pop ax ax=8
add ax,ax ax=10
pop bx bx=1000
add ax,bx...
阅读全文 |
评论次数(0) |
浏览次数(152) |
所属类型(汇编作业)
[2012-10-11 15:58] 实验九
assume cs:code,ds:data,ss:stack
data segment ;数据段
db 'welcome to masm!' ;要显示的数据
db 2h,24h,81h ;属性,可以利用h定义十六进制数据
data ends
stack segment ;栈段
dw 8 dup(0)
stack e...
data segment ;数据段
db 'welcome to masm!' ;要显示的数据
db 2h,24h,81h ;属性,可以利用h定义十六进制数据
data ends
stack segment ;栈段
dw 8 dup(0)
stack e...
阅读全文 |
评论次数(1) |
浏览次数(156) |
所属类型(汇编作业)
[2012-10-11 15:57] 检测点9.3
; 检测点9.3
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s:
mov cl,[bx]
mov ch,0 ;如果找到了,那么此时cx=0
inc c...
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s:
mov cl,[bx]
mov ch,0 ;如果找到了,那么此时cx=0
inc c...
阅读全文 |
评论次数(1) |
浏览次数(148) |
所属类型(汇编作业)
[2012-10-11 15:56] 检测点9.2
; 检测点9.2
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s:
;填空开始
mov cl,[bx]
mov ch,0
jcxz ok...
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s:
;填空开始
mov cl,[bx]
mov ch,0
jcxz ok...
阅读全文 |
评论次数(1) |
浏览次数(161) |
所属类型(汇编作业)
[2012-10-11 15:55] 检测点9.1
(1)
; 检测点9.1
comment ;
想让cs:ip从第一条指令重新执行,那么 字([bx+1])=0
结果见图片
;
assume cs:code
data segment
dw 0,0
data ends
code segment
start:
mov ax,data
mov ds,ax
...
; 检测点9.1
comment ;
想让cs:ip从第一条指令重新执行,那么 字([bx+1])=0
结果见图片
;
assume cs:code
data segment
dw 0,0
data ends
code segment
start:
mov ax,data
mov ds,ax
...
阅读全文 |
评论次数(1) |
浏览次数(156) |
所属类型(汇编作业)
[2012-10-11 15:52] 实验八
comment ;
这道题的运行看起来有些古怪。其实,具体分析一下它也是可以正常返回的
1、首先,s-s0表达的意思是把s2处的两个字节指令复制到s处
2、然后,jump到s处执行,关键就是这个s处,它这条指令到底代表什么意思要想知道s处的指令什么意思,就得看它的来源s2处
3、接下来,我们分析s2处的jmp short s1,从汇编源程序的角度,我们看到的是jump到s1处执行。可是,如果我们编译连接后这个程序是可以正常退出的,这又怎么解释呢?
好了,让我们站在机器码的角度去分析这条指令jmp short s1
①
从图中,我们可以看到编译后的指令为...
这道题的运行看起来有些古怪。其实,具体分析一下它也是可以正常返回的
1、首先,s-s0表达的意思是把s2处的两个字节指令复制到s处
2、然后,jump到s处执行,关键就是这个s处,它这条指令到底代表什么意思要想知道s处的指令什么意思,就得看它的来源s2处
3、接下来,我们分析s2处的jmp short s1,从汇编源程序的角度,我们看到的是jump到s1处执行。可是,如果我们编译连接后这个程序是可以正常退出的,这又怎么解释呢?
好了,让我们站在机器码的角度去分析这条指令jmp short s1
①
从图中,我们可以看到编译后的指令为...
阅读全文 |
评论次数(1) |
浏览次数(142) |
所属类型(汇编作业)
[2012-10-10 18:08] 实验七
comment ; 块注释
失误:
1、把数据输错了
2、偏移量计算失误
3、想到了除法溢出,但此处好像不需要
说明:
1、bx作为年份的偏移
2、bx+idata作为收入的偏移,bx每次加4
3、si作为雇员数的偏移的,以上偏移的段地址在ds中
4、es:[di]->table中的单元
;
assume cs:code,ds:data
data segment
;年份
db '1975','1976','1977','1978','1979'...
失误:
1、把数据输错了
2、偏移量计算失误
3、想到了除法溢出,但此处好像不需要
说明:
1、bx作为年份的偏移
2、bx+idata作为收入的偏移,bx每次加4
3、si作为雇员数的偏移的,以上偏移的段地址在ds中
4、es:[di]->table中的单元
;
assume cs:code,ds:data
data segment
;年份
db '1975','1976','1977','1978','1979'...
阅读全文 |
评论次数(1) |
浏览次数(137) |
所属类型(汇编作业)
[2012-10-10 18:04] 实验六
comment ;
实验六
;
assume cs:code,ds:data,ss:stack
stack segment
dw 8 dup(0)
stack ends
data segment
db '1. dispaly '
db '2. brows '
db ...
实验六
;
assume cs:code,ds:data,ss:stack
stack segment
dw 8 dup(0)
stack ends
data segment
db '1. dispaly '
db '2. brows '
db ...
阅读全文 |
评论次数(1) |
浏览次数(157) |
所属类型(汇编作业)
[2012-10-10 15:43] 实验五
(1)
①CPU执行程序,程序返回前data段中的数据是1908:0000 23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09
②CPU执行程序,程序返回前cs=190ah,ss=1909h,ds=1908h
③设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1
见图1
(2)
①CPU执行程序,程序返回前data段中的数据是1908:0000 23 01 56 04 00 00 00 00-00 00 00 00 00 00 00 00
②CPU执行程序,程序返回前cs=190...
①CPU执行程序,程序返回前data段中的数据是1908:0000 23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09
②CPU执行程序,程序返回前cs=190ah,ss=1909h,ds=1908h
③设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1
见图1
(2)
①CPU执行程序,程序返回前data段中的数据是1908:0000 23 01 56 04 00 00 00 00-00 00 00 00 00 00 00 00
②CPU执行程序,程序返回前cs=190...
阅读全文 |
评论次数(3) |
浏览次数(161) |
所属类型(汇编作业)