老实说,这是我在这本书中写的最烂的一个程序。原因有四:1.我不清楚怎么写子程序调用的规范代码,这里面用的是书上的代码。2.没能将data段中的显示信息写成一个子程序。3.我总感觉有些BUG,感觉对这个程序的功能很不满意。4.没能从寄存器的角度对这段代码进行分析
但我仍将它贴出来,是因为我希望日后我能回头看一看我当初的水平。当初是多么的菜。激励自己进步。
assume cs:code,ds:data
data segment
name1 db '(1)Clean the Screan',0dh,0ah,'$'
name2 db '(2)Set the forecolore',0...


- [游客] <a href="http://www.playren.com/">整人方法</a> 12/21 17:12
- [游客] 入门也有高低,尤其是学习应用知识的思维很重要。 08/17 09:28
- [游客] 到目前为止学过了jcxz,可以用这个指令判断字符串末尾。学到了第十一章会学到更多的条件跳转指令了 ^ 08/17 09:26
- [sleepinglion] 我错了,前面的书没仔细看。这个程序的第一个大缺点就是通用性很差。因为如果用loop循环,显然得计算字 07/30 23:55
- [qiu0305] 哥们你很厉害 07/28 19:49
- [sleepinglion] 下午实在是太冲动了,不该贴出来,不够灵活。我会抽空优化的。 07/27 16:16
- [masmaster] 简单的方法, 定义一个数据段就可以啦,用相对寻址方式:比如: s: mov ah,[bx] 07/23 10:13
[2010-08-15 17:00] 实验16源代码
阅读全文 |
评论次数(0) |
浏览次数(652) |
所属类型(汇编作业)
[2010-08-09 01:47] 实验14
首先得感谢“莫取网名”,他的程序让我找到了动态显示时间的方法。但是,他教我的动态显示时间的方法有一个BUG,就是,当再次加载程序的时候,就不能动态显示时间了。我不知道是为什么,也许是因为我一直都是用windows xp做实验的缘故吧。
其次,其实这题给我们的第一感觉就应该能联想到实验13.3.当然,前提是做了那一题。
好了,贴出我的代码:
assume cs:code
code segment
s1: db '/','/',' ',':',':',' ' ;一定要在最后加一个' ',为了和s2同长度。若不加,运行后面会出现O
s2: db 9,8,7,4,2,0
st...
其次,其实这题给我们的第一感觉就应该能联想到实验13.3.当然,前提是做了那一题。
好了,贴出我的代码:
assume cs:code
code segment
s1: db '/','/',' ',':',':',' ' ;一定要在最后加一个' ',为了和s2同长度。若不加,运行后面会出现O
s2: db 9,8,7,4,2,0
st...
阅读全文 |
评论次数(0) |
浏览次数(701) |
所属类型(汇编作业)
[2010-08-06 20:12] 实验12(加了个字符颜色属性)
稍微做了点改变,使字符为红色。其中出现了两处mov ax,4c00h int 21h我觉得第一处没必要使用的。请大家批评指正。谢谢!
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld
rep movsb ;do0安装程序
mov ax,0
mov es,ax
mov word ptr es:...
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld
rep movsb ;do0安装程序
mov ax,0
mov es,ax
mov word ptr es:...
阅读全文 |
评论次数(1) |
浏览次数(817) |
所属类型(汇编作业)
[2010-08-06 03:43] 实验11源代码
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 cx
push si ...
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 cx
push si ...
阅读全文 |
评论次数(0) |
浏览次数(697) |
所属类型(汇编作业)
[2010-08-05 06:29] 实验10(3.数值显示)
assume cs:code
data segment
db 10 dup(0)
data ends
code segment
start:
mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc:
push dx
push cx
push ax
push si
push di
s1:
mov dx,0
mov cx,10...
data segment
db 10 dup(0)
data ends
code segment
start:
mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc:
push dx
push cx
push ax
push si
push di
s1:
mov dx,0
mov cx,10...
阅读全文 |
评论次数(0) |
浏览次数(637) |
所属类型(汇编作业)
[2010-07-30 20:55] 实验10(1.显示字符串)(望高手指点,帮忙优化)
我对这个程序代码很不满意,感觉写得很乱。但目前没有时间进一步优化,希望高手能够指点一下。谢谢!
注:
1.mov es:[bx+si+1],ax中,必须要加1,因为显存中“偶字符,奇颜色”。否则会出现“乱码”
2.我不喜欢里面规定的(cl)=颜色,因为在用loop循环的时候非常麻烦,还得将cl再赋给dl,多走了一步。倒不如直接赋给其它寄存器,如di等。
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:
mov dh,8
mov dl,3
mov ...
注:
1.mov es:[bx+si+1],ax中,必须要加1,因为显存中“偶字符,奇颜色”。否则会出现“乱码”
2.我不喜欢里面规定的(cl)=颜色,因为在用loop循环的时候非常麻烦,还得将cl再赋给dl,多走了一步。倒不如直接赋给其它寄存器,如di等。
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:
mov dh,8
mov dl,3
mov ...
阅读全文 |
评论次数(2) |
浏览次数(878) |
所属类型(汇编作业)
[2010-07-30 02:29] 监测点10.5(1)程序分析
初始化时:
|__00___|00 SS
|__00___|01
|__00___|02
|__00___|03
|__00___|04
|__00___|05
|__00___|06
|__00___|07
|__00___|08
|__00___|09
|__00___|0A
|__00___|0B
|__00___|0C
|__00___|0D
|__00___|0E
|__00___|0F
|_______|<-sp
执行mov ds,ax后:
|__00___|00 SS,DS
|__00___|01
|__00___|02
|__0...
|__00___|00 SS
|__00___|01
|__00___|02
|__00___|03
|__00___|04
|__00___|05
|__00___|06
|__00___|07
|__00___|08
|__00___|09
|__00___|0A
|__00___|0B
|__00___|0C
|__00___|0D
|__00___|0E
|__00___|0F
|_______|<-sp
执行mov ds,ax后:
|__00___|00 SS,DS
|__00___|01
|__00___|02
|__0...
阅读全文 |
评论次数(0) |
浏览次数(301) |
所属类型(汇编作业)
[2010-07-29 22:43] 实验8最新源代码(这次通用性要好很多了)
思路:用es指向显示字符串的地址,但由于要分3行显示,故需改变3次es的地址,可以通过栈来实现。第一次赋给es0b86eh,以后每次增0ah(自己算,不解释了)通过mov es dx来实现,改变es地址时,add dx 0ah。(表达能力太差了,你们自己看吧。有些东西是很难表达出来的,请谅解,等我有空再加注释吧。)这次我算真正的理解了一句话:一定要对栈小心操作。因为调试这个程序导致了我计算机两次蓝屏,悲剧!
assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!'
db 02h,24h,71h
dat...
assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!'
db 02h,24h,71h
dat...
阅读全文 |
评论次数(0) |
浏览次数(306) |
所属类型(汇编作业)
[2010-07-27 13:46] 实验8源代码
虽然做出来了,可总是感觉很奇怪。这一章不是关于跳转指令吗,为什么我没用到跳转指令呢?
assume cs:code,ds:data
data segment
dw 0b86eh,0b878h,0b882h ;经计算得出的显示地址
db 57h,01h,65h,01h,6ch,01h,63h,01h,6fh,01h,6dh,01h,65h,01h,20h,00h,74h,01h,6fh,01h
db 20h,00h,6dh,01h,4fh,01h,73h,01h,6dh,01h,21h,01h
db 57h,24h,65h,24h,6ch,24h,63h...
assume cs:code,ds:data
data segment
dw 0b86eh,0b878h,0b882h ;经计算得出的显示地址
db 57h,01h,65h,01h,6ch,01h,63h,01h,6fh,01h,6dh,01h,65h,01h,20h,00h,74h,01h,6fh,01h
db 20h,00h,6dh,01h,4fh,01h,73h,01h,6dh,01h,21h,01h
db 57h,24h,65h,24h,6ch,24h,63h...
阅读全文 |
评论次数(2) |
浏览次数(579) |
所属类型(汇编作业)
[2010-07-26 21:53] 实验7源代码
assume cs:code
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000...
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000...
阅读全文 |
评论次数(0) |
浏览次数(324) |
所属类型(汇编作业)