本程序完全按照书的意思编写,我发现在在BBS上面有些人写出来的程序,已经违背了书上的题意,题意很明显,要让自己体会一下,对用户隐藏显存地址,他们只需要输入行数,列数及属性字节,就能达到他们的目的,我们要提供这样的一个接口,可是我发现有人在编写程序中用这三样作了立即数,倒,这样就不是接口那个概念了
程序思想:一,先将行数,列数转换成相应的地址!将ES指向显存起初地址,DI偏移
二,移动DS:SI指向的字符串到显存ES:DI,以0结束
assume cs:code
data segment
db 'welcome to masm!',0
data ends
code segm...
- [游客] 反对 那 jmp bx??应该占几个字节>>按你的理论应该是一个字节. 那为什么王爽书上写的是 12/19 11:19
- [lonelyboy] 楼上回答的精典. 07/11 08:55
- [leefox] 程序的起始地址包括声明在代码之前的数据在内,但不包括PSP,DS指向PSP的开始地址,所以程序的始地 06/01 01:25
- [debugkkk] 我有过博主的经历,对新知识的恐惧,我觉得克服这一点的办法是,如果怕什么的时候,就努力的让自己去多的接 05/22 20:36
- [mark0289] 第一题答案是第三个,ds默认应当是比ss,cs高出256字节,如果code段前有数据,那么cs就比s 05/20 09:53
- [mark0289] 这个第一题的本身让我很奇怪,因为我用debug调试的时候,r指令之后,ds肯定比ss高出256字节, 05/19 22:52
- [游客] 博主说的很对。 值得大家思考,一定要发挥题目的价值。 05/03 11:16
- [crazyman] 对于博主的问题,我是这样理解的。 jmp ... 指令最终生成的机器码跟跳转范围有关,这个在附注中 04/30 14:59
- [crazyman] 确实看的挺晕乎。。。 再看两边! 04/30 14:41
- [mouselove] jmp s和jmp near s是相等的,从机器码也可以看出,cpu会把他们以统一规则编码。(他们都 04/30 10:22
[2008-05-02 08:09] 10.1我也体会到了接口概念
阅读全文 |
评论次数(1) |
浏览次数(848) |
所属类型(个人心得)
[2008-04-30 10:04] 闲扯原码、反码、补码
闲扯原码、反码、补码
相信大家看到这个标题都不屑一顾,因为在任何一本计算机基础知识书的第一章都有他们的解释,但是在书上我们只能找到一些简单的定义,没次看过之后不久就忘了。最近论坛里有人问起这些概念,看到很多人的回复是以前看过现在忘了去看看某某书之类,很少有给出一个合理的解释。于是本人就开始思考(虽然上帝会发笑,我还是要思考。),于是得出了以下的结论。
数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学事实的...
相信大家看到这个标题都不屑一顾,因为在任何一本计算机基础知识书的第一章都有他们的解释,但是在书上我们只能找到一些简单的定义,没次看过之后不久就忘了。最近论坛里有人问起这些概念,看到很多人的回复是以前看过现在忘了去看看某某书之类,很少有给出一个合理的解释。于是本人就开始思考(虽然上帝会发笑,我还是要思考。),于是得出了以下的结论。
数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学事实的...
阅读全文 |
评论次数(1) |
浏览次数(1551) |
所属类型(个人心得)
[2008-04-30 02:41] Jmp疑惑!!!
在段内近转中,为什么会无缘无帮的增加一个nop,我经过多次反复论证,跟我定义的数据有关,
这一句,db 10 dup (0),当我改变循环次数的时候,机器指令有时会出现增加了多个Nop,一到三个不等,有时一个也不出会现,这个指令我在源代码中,并没有写!而在短转中,我改循环次数,并不会出现这种情况,在近转和段间跳转都会出现,很是疑惑,请高手指点!Nop这个指令我知道CPU什么也不作,但我想不通为什么机器码要插入这个!...
这一句,db 10 dup (0),当我改变循环次数的时候,机器指令有时会出现增加了多个Nop,一到三个不等,有时一个也不出会现,这个指令我在源代码中,并没有写!而在短转中,我改循环次数,并不会出现这种情况,在近转和段间跳转都会出现,很是疑惑,请高手指点!Nop这个指令我知道CPU什么也不作,但我想不通为什么机器码要插入这个!...
阅读全文 |
评论次数(7) |
浏览次数(1754) |
所属类型(教程中的疑问)
[2008-04-27 18:18] 实验七,两种方法完成
第一种方法:
assume cs:codesg
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,118...
assume cs:codesg
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,118...
阅读全文 |
评论次数(2) |
浏览次数(663) |
所属类型(个人心得)
[2008-04-27 08:31] 学完王爽老师这本书,能否进入win32学习!
由于我的最终目的是为了学习win32汇编,但是为了打下一点基础,故来学习8086,不知道学完了王爽老师这本书,能否进入win32的学习,还请高手指点!或是提供一点学习方法...
阅读全文 |
评论次数(7) |
浏览次数(925) |
所属类型(教程中的疑问)
[2008-04-26 19:42] 第七章检测题,老是通过不了,唉...唉....唉,,,,,
第七章检测点
第一题:
生成EXE之后用Debug加载后,查看寄存器内容如下:
ds=0b2d es=0b2d ss=0b3d cs=0b3e ip=0000
程序的起始地址的段地址是_____。
1、 0b3e
2、 0b2d
3、 0b3d
4、 0
分析1,CS是指向程序的第一条指令!这道题我有点蒙,程序的起始地址到底是要程序的最前面的地址,包括PSP,还是指的第一条指令 ?还是包括声明在代码之前的数据在内?
分析2:用debug 加载后,我认DS是指向程序最头部,应该是选DS
分析3,分析1中已经提到!
我的答案是:2
...
第一题:
生成EXE之后用Debug加载后,查看寄存器内容如下:
ds=0b2d es=0b2d ss=0b3d cs=0b3e ip=0000
程序的起始地址的段地址是_____。
1、 0b3e
2、 0b2d
3、 0b3d
4、 0
分析1,CS是指向程序的第一条指令!这道题我有点蒙,程序的起始地址到底是要程序的最前面的地址,包括PSP,还是指的第一条指令 ?还是包括声明在代码之前的数据在内?
分析2:用debug 加载后,我认DS是指向程序最头部,应该是选DS
分析3,分析1中已经提到!
我的答案是:2
...
阅读全文 |
评论次数(6) |
浏览次数(988) |
所属类型(检测点疑问)
[2008-04-25 19:35] 第六单检测点,疑雾重重!速请高手指点!
第一题:
在Intel8086环境下,下列说法合理的是_____。
1、 汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。
2、 一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。
3、 如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间
存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。
4、 用DW和DD定义进行的数据,只能够以字为单位访问。
分析过程:分析1,我认为不对,处于64K空内以外的数据,我们可以给出段地址与偏移地址去访问,所以1排除!
分析2,也不...
在Intel8086环境下,下列说法合理的是_____。
1、 汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。
2、 一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。
3、 如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间
存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。
4、 用DW和DD定义进行的数据,只能够以字为单位访问。
分析过程:分析1,我认为不对,处于64K空内以外的数据,我们可以给出段地址与偏移地址去访问,所以1排除!
分析2,也不...
阅读全文 |
评论次数(7) |
浏览次数(725) |
所属类型(检测点疑问)
[2008-04-21 16:22] 编译出错!请高手指点
王爽的书里提到编译时出现这样的问题是源文件不存在的原因,可是我的源件是在的,而且跟编译器在同一个目录,我还试过了用绝对路径指定源文件编译,可是不行!不知道错在哪里,还望哪位朋友指点一下!...
阅读全文 |
评论次数(2) |
浏览次数(813) |
所属类型(教程中的疑问)
[2008-04-19 15:41] 为何不能这样寻址!请高手指点!(第三章检测点)
下列指令的书写正确的是:____
1、 push al
2、 mov cs:[0],ds:[10]
3、 pop si
4、 mov ds:[0],2
第一项肯定是错,栈只对字操作,
第2跟跟4为什么错的,我就想不通了,难道指令不支持这样寻址吗?
这不是段地址与偏移地址指向物理地址吗?...
1、 push al
2、 mov cs:[0],ds:[10]
3、 pop si
4、 mov ds:[0],2
第一项肯定是错,栈只对字操作,
第2跟跟4为什么错的,我就想不通了,难道指令不支持这样寻址吗?
这不是段地址与偏移地址指向物理地址吗?...
阅读全文 |
评论次数(5) |
浏览次数(740) |
所属类型(检测点疑问)
[2008-04-18 02:15] 实验不符高字节放高位,低字节放低位?
同时向内存修改 "abcd"
高字节是应该是从a 开始吧,d是最低的字节,d 理应放在最低地址.
实验结果却完全按照我输入顺序放在内存,疑问难消...
高字节是应该是从a 开始吧,d是最低的字节,d 理应放在最低地址.
实验结果却完全按照我输入顺序放在内存,疑问难消...
阅读全文 |
评论次数(4) |
浏览次数(720) |
所属类型(教程中的疑问)
『 查看更多文章 』