17章那个字符串的输入显示删除这个程序,实在是太神奇了,让我兴奋很好几秒钟(几秒钟?是的,几秒钟!不能兴奋太久啊,万一兴奋过度我从1楼跳下去怎么办?)
我发现了几个我自己认为多余的语句,不知道大家是不是也早就发现了,还是说我错了?(不说废话了,进入正题)
;;;;;;;;;;;;;;;;;;;;第一处多余的地方;;;;;;;;;;;;;;;;;;;
在charpop这段代码中,代码如下:
charpop: cmp top,0
je sret
dec top
mov bx,top
mov al,[si][bx]
jmp sret
我认为
...


- [游客] 程序 简单 但是烦琐 现在的代码不好看 09/30 00:33
- [bh4cxj] 对了下答案 07/17 00:08
- [chinatree] 原来楼主口中说的那个厉害的程序员是绝影呀,我想拜他为师呢,可是他被腾讯搞了,判两年。等他出来了愿意收 09/22 02:16
- [lsh080431125] 我在毕业后才发现,我的梦想和你类似, 一起加油吧! 09/21 19:30
- [a2163923] 我高中就觉悟了 谢谢··· 06/22 19:22
- [0951210] 大二下了,好像算得上也才醒悟。唉 04/10 15:58
- [wozero] 哈哈 有感觉了!!!! 10/27 20:26
- [mywiil] 顶了!! 08/21 03:34
- [musicvs] 呵呵,很久没来了~ 论坛已经被删除了,这种方式失败了,呵呵~ 06/05 23:39
- [hwenycocodq520] 哈哈,疯狂的程序员 我也看过,感觉越来越像小说里面的主人公 05/17 19:06
- [betterpursuel] 加油 05/11 19:58
- [zihaolee] 博主厉害~ 05/01 21:44
- [musicvs] 呵呵,它确实是以扇区为单位进行读写的,我也不懂怎么读写指定字节的数据,你是想实现什么功能呢? 12/14 14:07
- [mxl800] 最近很少在网上看到你了,过来问问题呀,不知道你什么时候来看! 我想问个关于int 13h中断的问题 12/14 08:50
- [musicvs] 恩恩,我看一看~ 11/26 12:21
- [mxl800] 呵呵,教我知识者,皆为吾师!musicvs老师,我又过来麻烦你了,不知道你会不会常来了,对于第十七章 11/26 09:10
- [musicvs] 呵呵,不过,不给跳着学... 11/12 23:54
- [grasshat] 哦,那我要等到下个学期了!c语言是学过的,下个阶段一个月足够了! 11/12 17:19
- [musicvs] 08年12月27日开始 11/12 16:37
- [grasshat] 我向问你下,你知道程序设计训练营什么时候进入下一个阶段吗? 11/12 07:53
[2008-09-20 21:13] 17.3字符的输入发现几个问题
阅读全文 |
评论次数(1) |
浏览次数(628) |
所属类型(个人笔记)
[2008-09-18 19:52] 计算sin(x)
书上的程序,加了对角度值的检测.
哈,贴出来,留恋~^_^
;名字:计算sin(x)
;功能:计算sin(x),x∈{0°,30°,60°,90°,120°,150°,180°},并在屏幕中间显示计算结果
;参数:al中存放角度值
assume cs:code
code segment
mov al,30
call showsin
mov ax,4c00h
int 21h
showsin: jmp short show
table dw ag0,ag30,ag60,ag90,ag120,ag150,ag180
ag0 d...
哈,贴出来,留恋~^_^
;名字:计算sin(x)
;功能:计算sin(x),x∈{0°,30°,60°,90°,120°,150°,180°},并在屏幕中间显示计算结果
;参数:al中存放角度值
assume cs:code
code segment
mov al,30
call showsin
mov ax,4c00h
int 21h
showsin: jmp short show
table dw ag0,ag30,ag60,ag90,ag120,ag150,ag180
ag0 d...
阅读全文 |
评论次数(0) |
浏览次数(762) |
所属类型(个人笔记)
[2008-09-17 12:04] 关于无符号和有符号数的解释(转)
一、只有一个标准!
在汇编语言层面,声明变量的时候,没有 signed 和 unsignde 之分,汇编器统统,将你输入的整数字面量当作有符号数处理成补码存入到 计算机中,只有这一个标准!汇编器不会区分有符号还是无符号然后用两个标准来处理,它统统当作有符号的!并且统统汇编成补码!也就是说,db -20 汇 编后为:EC ,而 db 236 汇编后也为 EC 。这里有一个小问题,思考深入的朋友会发现,db 是分配一个字节,那么一个字节能表示的有符号整 数范围是:-128 ~ +127 ,那么 db 236 超过了这一范围,怎么可以?是的,+236 的补码的确超出了一个字节的表示范围,...
在汇编语言层面,声明变量的时候,没有 signed 和 unsignde 之分,汇编器统统,将你输入的整数字面量当作有符号数处理成补码存入到 计算机中,只有这一个标准!汇编器不会区分有符号还是无符号然后用两个标准来处理,它统统当作有符号的!并且统统汇编成补码!也就是说,db -20 汇 编后为:EC ,而 db 236 汇编后也为 EC 。这里有一个小问题,思考深入的朋友会发现,db 是分配一个字节,那么一个字节能表示的有符号整 数范围是:-128 ~ +127 ,那么 db 236 超过了这一范围,怎么可以?是的,+236 的补码的确超出了一个字节的表示范围,...
阅读全文 |
评论次数(0) |
浏览次数(1056) |
所属类型(个人笔记)
[2008-09-10 23:53] 由13章引起的一个疑问(有关masm)
我发现一个奇怪的现象,就是有关masm的.
在测试13.3(对int/iret和栈的深入理解)的第一个问题时(用7ch中断例程完成loop指令的功能).
里面有2个程序,一个是"在屏幕中间显示80个'!',另一个是7ch中断例程.(这些都是废话,呵呵~下面才是我的疑问)
这2个程序我分别命名为80和7ch
一:
我运行 cmd ,然后输入cd c:\masm 打开masm所在文件夹;
然后,输入 7ch.exe;
然后,输入 80.exe;
按理,应该在屏幕中间显示80个'!'才对,但是没有反应.
二:
我换个方法;
首先,仍然运行 cmd ,然后输入cd c...
在测试13.3(对int/iret和栈的深入理解)的第一个问题时(用7ch中断例程完成loop指令的功能).
里面有2个程序,一个是"在屏幕中间显示80个'!',另一个是7ch中断例程.(这些都是废话,呵呵~下面才是我的疑问)
这2个程序我分别命名为80和7ch
一:
我运行 cmd ,然后输入cd c:\masm 打开masm所在文件夹;
然后,输入 7ch.exe;
然后,输入 80.exe;
按理,应该在屏幕中间显示80个'!'才对,但是没有反应.
二:
我换个方法;
首先,仍然运行 cmd ,然后输入cd c...
阅读全文 |
评论次数(11) |
浏览次数(654) |
所属类型(个人笔记)
[2008-08-30 14:58] 笔记8—第八章
1.两个新的描述性符号:
* reg:表示一个寄存器
* sreg:表示一个段寄存器(s就是segment的缩写吧?)
2.学到这里,发现有2对死对头——si、di和bx、bp
si和di不能写在一起,如[si+bi],是错的
bx和bp不能写在一起,如[bx+bp],是错的
3.在[...]使用bp,如果指令中没有显性地给出段地址,段地址就默认在ss中;没有使用bp的话,就默认在ds中。
4.汇编语言中使用3个概念来表达数据的位置:
*1.立即数(idata):直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中)。立即数在汇编指 ...
* reg:表示一个寄存器
* sreg:表示一个段寄存器(s就是segment的缩写吧?)
2.学到这里,发现有2对死对头——si、di和bx、bp
si和di不能写在一起,如[si+bi],是错的
bx和bp不能写在一起,如[bx+bp],是错的
3.在[...]使用bp,如果指令中没有显性地给出段地址,段地址就默认在ss中;没有使用bp的话,就默认在ds中。
4.汇编语言中使用3个概念来表达数据的位置:
*1.立即数(idata):直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中)。立即数在汇编指 ...
阅读全文 |
评论次数(0) |
浏览次数(492) |
所属类型(个人笔记)
[2008-08-27 18:01] 笔记7—第七章
1.有2个很有用的新指令——and指令和or指令
*and指令:通过该指令可以将操作对象的相应位设为0(二进制),如:
mov al,01100011B
and al,00111011B
执行后,al=00100011B
想要哪一位变为0就把哪一位写成0.
*or指令:通过该指令可以将操作对象的相应位设为1,和and指令相反,想要哪一位变为1就把哪一位写成0。
2.大小写转换的问题
用二进制表示26个字母的大小写,可以发现,大小写字母只有第五位不一样,其他位都一样,大写字母第五位为0,小写字母第五位为1.
3.看这条指令:and al,1...
*and指令:通过该指令可以将操作对象的相应位设为0(二进制),如:
mov al,01100011B
and al,00111011B
执行后,al=00100011B
想要哪一位变为0就把哪一位写成0.
*or指令:通过该指令可以将操作对象的相应位设为1,和and指令相反,想要哪一位变为1就把哪一位写成0。
2.大小写转换的问题
用二进制表示26个字母的大小写,可以发现,大小写字母只有第五位不一样,其他位都一样,大写字母第五位为0,小写字母第五位为1.
3.看这条指令:and al,1...
阅读全文 |
评论次数(4) |
浏览次数(550) |
所属类型(个人笔记)
[2008-08-26 12:00] 笔记6—第六章
1.程序取得所需空间的方法有两种:
*1.在程序加载时为程序分配(这章学习的)
*2.程序在执行过程中像系统申请
2.这章又有新指令——DW(define word)和 DB(define byte)
DW:dw是用来定义字型数据的,也可以说它是用来开辟内存空间的
,开辟内存空间来干嘛呢?因为那段256字节的安全空间有时不够用,
所以用dw来开辟系统认为安全的空间(我的理解),在程序被加载如内
存时,dw定义的数据也就同时被加载入内存(即获得了存储空间)。
DB:这个书上没有解释,突然就冒出来了,通过debug调试,我发现
db是用来定义字节数据的。
...
*1.在程序加载时为程序分配(这章学习的)
*2.程序在执行过程中像系统申请
2.这章又有新指令——DW(define word)和 DB(define byte)
DW:dw是用来定义字型数据的,也可以说它是用来开辟内存空间的
,开辟内存空间来干嘛呢?因为那段256字节的安全空间有时不够用,
所以用dw来开辟系统认为安全的空间(我的理解),在程序被加载如内
存时,dw定义的数据也就同时被加载入内存(即获得了存储空间)。
DB:这个书上没有解释,突然就冒出来了,通过debug调试,我发现
db是用来定义字节数据的。
...
阅读全文 |
评论次数(0) |
浏览次数(470) |
所属类型(个人笔记)
[2008-08-24 18:14] 笔记5—第五章
1.要完整地描述一个内存单元,需要两种信息:
*1.内存单元的地址
*2.内存单元的长度(类型)
2.为了描述上的简洁,在以后的课程中,我们将使用一个描述性的符号 “()” 来表示一个寄存器或一个内存单元中的内容。(如果在编程能这么表示该多好,可是,不能)
3.一个新指令:inc ,如 int bx ,表示(bx)=(bx)+1
4.这章的重点来了——loop指令
CPU在执行loop指令时,要进行2步操作:
*1.(cx)=(cx)-1;
*2.判断cx中的值,不为零就可以循环,为零就不循环了。
loop指令通常用来实现循环功能(记住是通常,还有其他方法...
*1.内存单元的地址
*2.内存单元的长度(类型)
2.为了描述上的简洁,在以后的课程中,我们将使用一个描述性的符号 “()” 来表示一个寄存器或一个内存单元中的内容。(如果在编程能这么表示该多好,可是,不能)
3.一个新指令:inc ,如 int bx ,表示(bx)=(bx)+1
4.这章的重点来了——loop指令
CPU在执行loop指令时,要进行2步操作:
*1.(cx)=(cx)-1;
*2.判断cx中的值,不为零就可以循环,为零就不循环了。
loop指令通常用来实现循环功能(记住是通常,还有其他方法...
阅读全文 |
评论次数(3) |
浏览次数(582) |
所属类型(个人笔记)
[2008-08-23 21:47] 笔记3+4 第三、四章
**********************************************************************
第三章:
1.字单元:顾名思意,就是存放字的内存单元——存放一个字型数据的内存单元,由两个连续的的内存单元组成——既然是2个内存单元组成,那肯定就是16位咯~
2.三个兄弟——段寄存器CS、DS、SS
CS: 是用来存放指令的段地址,CPU将CS:IP所指向的内容当作指令来执行。它指向的一般是代码段(暂时是,不知道以后会不会有别的),所以我把它和代码段联系起来。
DS:我把它跟数据段联系起来,因为我们利用它来读取内存单元的数据,它通常(...
第三章:
1.字单元:顾名思意,就是存放字的内存单元——存放一个字型数据的内存单元,由两个连续的的内存单元组成——既然是2个内存单元组成,那肯定就是16位咯~
2.三个兄弟——段寄存器CS、DS、SS
CS: 是用来存放指令的段地址,CPU将CS:IP所指向的内容当作指令来执行。它指向的一般是代码段(暂时是,不知道以后会不会有别的),所以我把它和代码段联系起来。
DS:我把它跟数据段联系起来,因为我们利用它来读取内存单元的数据,它通常(...
阅读全文 |
评论次数(0) |
浏览次数(509) |
所属类型(个人笔记)
[2008-08-22 14:45] 一些缩写原型
在论坛上看到的,收藏先~
寄存器 =Register
80x86(Intel系列)CPU提供了几个通用寄存器。其中包含八个32位寄存器,如下所示,E’代表扩展(extended):
EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP
16位数据寄存器:
AH & AL =AX 累加寄存器,常用于运算 助记 Accumulator
BH & BL =BX 基址寄存器,常用于地址索引 助记 Base
CH & CL =CX 计数寄存器,常用于计数 助记 Count
DH & DL =DX 数据寄存器,...
寄存器 =Register
80x86(Intel系列)CPU提供了几个通用寄存器。其中包含八个32位寄存器,如下所示,E’代表扩展(extended):
EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP
16位数据寄存器:
AH & AL =AX 累加寄存器,常用于运算 助记 Accumulator
BH & BL =BX 基址寄存器,常用于地址索引 助记 Base
CH & CL =CX 计数寄存器,常用于计数 助记 Count
DH & DL =DX 数据寄存器,...
阅读全文 |
评论次数(0) |
浏览次数(1021) |
所属类型(个人笔记)