


- [chinatree] 有些事,努力去做了不一定能成功,但是不去做是绝对不会成功的。 11/09 01:14
- [fpamc] 哇咔咔!不错不错。。 07/09 01:09
- [fpamc] 对的。 07/05 07:22
- [ltp1234] 哦。。。我也是发现,好像只能重启虚拟机 06/28 07:05
- [fpamc] 说实话,还可以简化。 如果学了外中断,就可以实现按键退出。 你的程序现在是死循环。 06/27 07:24
- [ltp1234] 恩,明白,看别人说可以动态,我一想也是,最后加上jmp语句应该就可以了。 05/16 22:36
- [tomato] 可以来个循环执行。 05/16 22:02
- [ltp1234] 动画怎么制作成效果图?不懂? 05/15 07:01
- [tomato] 能看到效果图就好了...... 05/15 00:07
- [ltp1234] 恩,谢谢fpamc,忘了加h,验证没有问题 05/14 23:53
- [jeremy] 可以加你好友吗?我的469614823 08/07 14:38
[2012-07-08 23:41] 实验16,勉强完成,悲催
首先感谢fpamc,这个题目我卡那个标号地址那里断断续续几天,真是有点烦了,最后看了下fpamc的文章'实验16「扩展」'的实验心得,我也没有理解,直到我再看debug的内容的时候,才发现fpamc说的有道理,debug下面的标号a地址为安装程序开始的cs和偏移地址(之前一直想a的地址怎么不对呢,就是转不过弯来,那个地址怎么出来的,看不明白,天赋也就这样了),于是我把中断例程改在放前面了,再debug发现还是不对,偏移地址对了,段地址不对了,变成0了,要获得正确的202h地址,还得改中断向量表(不得不感叹编译器真是个神奇的东西)。获取知识容易,想改变自己错误的认知还是有点难的,得冷静,从“错误...
阅读全文 |
评论次数(1) |
浏览次数(683) |
所属类型(汇编作业)
[2012-07-05 07:18] 实验15
书看了几遍,书中的代码才看明白,晕倒。。。中断真有点不好理解。看懂了很有意思。。
assume cs:code
code segment
start: mov ax,0
mov es,ax
mov ax,cs
mov ds,ax
mov di,204h
mov si,offset int9
mov cx,offset int9end-offset int9
cld
rep movsb ;安装中断程序
push es:[9*4+0]
pop es:[200h]
push es:[9*4+2]
pop es:[202h] ;保存旧的中断例...
assume cs:code
code segment
start: mov ax,0
mov es,ax
mov ax,cs
mov ds,ax
mov di,204h
mov si,offset int9
mov cx,offset int9end-offset int9
cld
rep movsb ;安装中断程序
push es:[9*4+0]
pop es:[200h]
push es:[9*4+2]
pop es:[202h] ;保存旧的中断例...
阅读全文 |
评论次数(1) |
浏览次数(648) |
所属类型(汇编作业)
[2012-06-27 00:04] 实验14的改进
还是有个小问题,就是在windows模拟控制台上可以正常显示,在ms-dos6.22下面(虚拟机环境)会多出一个字符,已经实现了动态显示。先贴出来,或许哪天就想清楚了。代码如下:
assume cs:code
data segment
db 32 dup(0)
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov ax,stack
mov ss,ax
mov sp,16
;==读...
assume cs:code
data segment
db 32 dup(0)
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov ax,stack
mov ss,ax
mov sp,16
;==读...
阅读全文 |
评论次数(2) |
浏览次数(636) |
所属类型(汇编作业)
[2012-05-16 19:24] 实验14,
将之前做的显示字符串拿来直接用了,发现确实后面的内容得靠前面掌握才能进行饿。代码如下:
assume cs:code
data segment
db 32 dup(0)
data ends
stack segment
db 16 dup(0)
stack ends
code segment
mov ax,data
mov ds,ax
mov si,0
mov ax,stack
mov ss,ax
mov sp,16
;==读取年份==
mov cx,4
mov al,9
out 70h,al
in al,7...
assume cs:code
data segment
db 32 dup(0)
data ends
stack segment
db 16 dup(0)
stack ends
code segment
mov ax,data
mov ds,ax
mov si,0
mov ax,stack
mov ss,ax
mov sp,16
;==读取年份==
mov cx,4
mov al,9
out 70h,al
in al,7...
阅读全文 |
评论次数(2) |
浏览次数(700) |
所属类型(汇编作业)
[2012-05-14 20:51] 针对实验13-1所做的一个简单动画
这个题目我把书上的应用程序改了,中断程序没有改过,其实我想把动画过程代码写到中断程序里面的,还是算了,感觉好像不太好。我发现自己一个问题,我写代码好慢,尤其是一个寄存器被当做几个用途的时候,容易转晕;还有应用程序进入到中断程序和子程序的时候总怕寄存器的值被他们改变了。要改了,估计几个小时得去调bug了。不多说了,效果图不上了,直接上代码。
应用程序代码如下:
assume cs:code
data segment
a db"welcome to masm!",0
b db" ",0
data ends
code segment
start: ...
应用程序代码如下:
assume cs:code
data segment
a db"welcome to masm!",0
b db" ",0
data ends
code segment
start: ...
阅读全文 |
评论次数(2) |
浏览次数(684) |
所属类型(汇编作业)
[2012-05-13 23:36] 实验13.2,没有验证,应该没有问题(书上都有代码),有时间验证
assume cs:codesg
codesg segment
;==安装中断程序==
mov ax,cs
mov ds,ax
mov si,offset do
mov ax,0
mov es,ax
mov di,200h
mov cx,offset doend-offset do
cld
rep movsb
;==设置中断向量==
mov ax,0
mov ds,ax
mov word ptr ds:[7ch*4+0],200
mov word ptr ds:[7ch*4+2],0
mov ...
codesg segment
;==安装中断程序==
mov ax,cs
mov ds,ax
mov si,offset do
mov ax,0
mov es,ax
mov di,200h
mov cx,offset doend-offset do
cld
rep movsb
;==设置中断向量==
mov ax,0
mov ds,ax
mov word ptr ds:[7ch*4+0],200
mov word ptr ds:[7ch*4+2],0
mov ...
阅读全文 |
评论次数(3) |
浏览次数(600) |
所属类型(汇编作业)
[2012-05-13 07:50] 实验13-1,终于调试出来了
昨天这题调试到下半夜1:30,发现debug t状态下每个字符都可以显示,就是直接g显示一个!,想了半天也没发现是什么问题,纠结,没办法,只好睡觉(第二天要上班,希望第二天有收获),今天早上起来,不到半个小时,问题果然一下子出来了,原来是DH,DL没有改变,小问题都没看出来,精神好就是好,呵呵;这题给我的启示是还是各个中断程序以及子程序之间的参数影响,不确定正确的,debug t下面应该可以看明白错在哪里。代码如下:
assume cs:codesg
codesg segment
;==安装中断处理程序==
start: mov ax,cs
mov ds,ax
mov ...
assume cs:codesg
codesg segment
;==安装中断处理程序==
start: mov ax,cs
mov ds,ax
mov ...
阅读全文 |
评论次数(5) |
浏览次数(426) |
所属类型(汇编作业)
[2012-05-10 22:50] 第12章实验,书上有代码,重在自己理解加实践检验。
assume cs:codesg
codesg segment
start:
;==do0安装程序==
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,0200h
mov cx,offset do0end-offset do0
cld
rep movsb
;==设置中断向量表==
mov ax,0
mov es,ax
mov word ptr es:[0],0200h
mov word ptr es:[0+2],0
mov ax,4c00...
codesg segment
start:
;==do0安装程序==
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,0200h
mov cx,offset do0end-offset do0
cld
rep movsb
;==设置中断向量表==
mov ax,0
mov es,ax
mov word ptr es:[0],0200h
mov word ptr es:[0+2],0
mov ax,4c00...
阅读全文 |
评论次数(1) |
浏览次数(434) |
所属类型(汇编作业)
[2012-05-10 20:08] 这段时间把后面的书基本上看完,回头做题目,代码如下:
assume cs:codesg
datasg segment
db "Beginner 's all-purpose symbolic instruction code.",0
datasg ends
codesg segment
begin: mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:
push ax
push si
push bx
sub ax,ax
p:
mov cl,byte ptr ds:[si]
mov...
datasg segment
db "Beginner 's all-purpose symbolic instruction code.",0
datasg ends
codesg segment
begin: mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:
push ax
push si
push bx
sub ax,ax
p:
mov cl,byte ptr ds:[si]
mov...
阅读全文 |
评论次数(1) |
浏览次数(418) |
所属类型(汇编作业)
[2012-04-23 18:33] 经过两个多星期的痛苦调试,终于出来了,每次都想问人的时候,发现还是自己靠的住,和大家分享一下,多多指教
这个课程设计感受最多的是子程序调用之前,一定将寄存器内容保存好,还是书上的话对,除返回值的寄存器不能保存外,其它最好保存,不然像我一样,调试了好长时间,一个bug接着一个bug,每次我调试都是先g 到call 子程序的后面,再d 相应的内存数据是否正确,才继续往下g,如果不对,就重新debug,t到子程序内部,虽然如此来回也搞了好久。每次在我快失望的时候,我会放松下来去玩下,然后再来搞,思维就不会僵在那里了,这个程序es:di(b800:0)我发现前几行一直不对,刚开始我t到这里的时候总是不显示,我一直在想为什么,总是以为自己的程序逻辑有问题,时隔一天,我看看其它的数据能不能显示,结果发现前几...
阅读全文 |
评论次数(3) |
浏览次数(169) |
所属类型(汇编作业)