老实说,这是我在这本书中写的最烂的一个程序。原因有四: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) |
浏览次数(603) |
所属类型(汇编作业)
[2010-08-15 00:16] 17.2节设置屏幕字符颜色代码解析
关键还是自己理解。有些东西,只可意会,不可言传的。也许我解释的不够清楚。
assume cs:code
code segment
start:
mov ah,0
int 16h ;读取键盘输入
mov ah,1 ;(ah)=00000001
cmp al,'r'
je red
cmp al,'g'
je green
cmp al,'b'
j...
assume cs:code
code segment
start:
mov ah,0
int 16h ;读取键盘输入
mov ah,1 ;(ah)=00000001
cmp al,'r'
je red
cmp al,'g'
je green
cmp al,'b'
j...
阅读全文 |
评论次数(0) |
浏览次数(660) |
所属类型(默认类型)
[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) |
浏览次数(623) |
所属类型(汇编作业)
[2010-08-08 22:49] 随感
最终明白了,原来王老师的教程对于16位汇编而言,只能是入门教程。要想进步,必须要看其它教程,要多编程,多总结。...
阅读全文 |
评论次数(1) |
浏览次数(755) |
所属类型(默认类型)
[2010-08-08 00:11] 关于检测点13.1中7ch中断的最大转移位移的实验验证
经过本人实验验证,我认为:应该是65536.
不知是否正确,还请大家帮忙批评指正。不胜感激!
而且经过我多番修改dup 65424 dup(0)中的65242的值,发现65242是上限,超过这个数就会出现“25.ASM(50): warning A4102: Segment near (or at) 64K limit”的错误,即已经超过了段的最大长度了,可明明从0BB7:FFDC到0BB7:FFFF都是被0填充的,应该还能存放代码的啊,为什么不能再大于65424了呢?我百思不得其解,希望大家也能思考一下。谢谢!
验证代码如下:
assume cs:code
code segment...
不知是否正确,还请大家帮忙批评指正。不胜感激!
而且经过我多番修改dup 65424 dup(0)中的65242的值,发现65242是上限,超过这个数就会出现“25.ASM(50): warning A4102: Segment near (or at) 64K limit”的错误,即已经超过了段的最大长度了,可明明从0BB7:FFDC到0BB7:FFFF都是被0填充的,应该还能存放代码的啊,为什么不能再大于65424了呢?我百思不得其解,希望大家也能思考一下。谢谢!
验证代码如下:
assume cs:code
code segment...
阅读全文 |
评论次数(0) |
浏览次数(648) |
所属类型(默认类型)
[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) |
浏览次数(769) |
所属类型(汇编作业)
[2010-08-06 11:13] 总结出来的标志位的判断方法
下面是我总结出来的标志位的判断方法。我也不知道对不对,是否实用。但至少目前为止还没错过,所以先写出来,希望高手能够指点一下。我也希望能够有更简便的判断方法,希望知道的人能够告诉我一下,谢谢。
1.OF位的判断
溢出,只是对有符号数运算而言。因此,我们在讨论溢出(或者说在判断OF的值)的时候,应将对象看为有符号数,其最高位为符号位。
对于8位数而言,由于其最高位为符号位,故它所能表示的十进制数范围为[-128,127]。
现在,要判断是否溢出,就将对象全部转化为十进制数,然后再进行运算(加减乘除)。看运算后所得的结果是否在[-128,127]之间,如果不在,就发生了溢出,OF...
1.OF位的判断
溢出,只是对有符号数运算而言。因此,我们在讨论溢出(或者说在判断OF的值)的时候,应将对象看为有符号数,其最高位为符号位。
对于8位数而言,由于其最高位为符号位,故它所能表示的十进制数范围为[-128,127]。
现在,要判断是否溢出,就将对象全部转化为十进制数,然后再进行运算(加减乘除)。看运算后所得的结果是否在[-128,127]之间,如果不在,就发生了溢出,OF...
阅读全文 |
评论次数(0) |
浏览次数(565) |
所属类型(默认类型)
[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) |
浏览次数(653) |
所属类型(汇编作业)
[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) |
浏览次数(554) |
所属类型(汇编作业)
[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) |
浏览次数(788) |
所属类型(汇编作业)
『 查看更多文章 』