汇编网首页登录博客注册
sbx2000_0的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
友情链接

[2007-10-26 21:48] 实验13.1

assume cs:code
data segment
  db 'welcome to masm!',0
data ends
code segment
start: mov ax,cs  ;安装程序
       mov ds,ax
       mov si,offset doi
       mov ax,0
       mov es,ax
       mov di,200h
       mov cx,offset doiend-offset doi
       cld
       rep movsb
       mov word ptr es:[...
阅读全文 |   作者:micraobot | 评论次数(1) | 浏览次数(1370)

[2008-10-22 16:46] 检测点13.1(1)转移最大位移求解

一个小小的问题,耗费了我近一天的精力,不容易呀。看了做过这个检测点的学习者的答案,发现很不一致,有很多人对自己的答案都表示怀疑。也有很多人对自己的答案很自信,但是有的答案根本就是错的,因为在debug下就能证明。下面,贴出我的劳动成果给大家看看,我的结论是65529(FFF9H)。
首先这里说的是模拟loop指令的功能,这里的“模拟”应该理解为和loop指令的表现形式上是一致的,但是有一定区别,然后我们再来看这个问题。
对这道题基本有四种看法:
第一种人认为:既然是模拟loop指令的功能,那么就应该是和loop指令功能一模一样,既然loop指令的最大转移位移为[-128~127],很容易...
阅读全文 |   作者:lwbfq | 评论次数(6) | 浏览次数(1872)

[2009-02-07 15:50] 【实验12】编写0号中断的处理程序

看完了第12章,感觉到这个中端机制确实强大,cpu每执行完一条指令,就检测是不是有中断信息。接受到中断信息后,对于不同的信息就转到中断向量表中不同的位置,读取中断程序的入口地址,然后执行中断程序,完毕后再返回。由于中断信息有各种各样的,所以能处理的情况也就有很多。
    本章的程序没什么问题,后面的实验12也就是把书中的程序改动几处即可。但是我有两个问题还不理解:
【问题1】cpu可以根据不同的中断信息来执行不同的中断程序,但是cpu是如何得知产生了中断信息呢?对于单步执行已经明白,就是每次检测到TF位为1,就引发但不中断。但是对于除法溢出呢?每次除法溢出后会有怎样的改变使得cpu得到了...
阅读全文 |   作者:lhjoanna | 评论次数(4) | 浏览次数(1351)

[2009-02-18 16:31] 使用debug帮助

debug的帮助:

C:\DOCUME~1\ADMINI~1>debug
-?
assemble     A [address]
compare      C range address
dump         D [range]
enter        E address [list]
fill         F range list
go           G [=address] [addresses]
hex          H value1 value2
input        I port
load         L [address] [d...
阅读全文 |   作者:mouse | 评论次数(1) | 浏览次数(1196)

[2009-01-30 11:19] masm常见错误

汇编程序在对源程序的汇编过程中,若检查出某语句有语

法错误,随时在屏幕上给出出错信息.如操作人员指定的
列表文件名(即.LST),汇编程序亦将在列表文件中出错的
下面给出出错信息,以便操作人员即时查找错误,给予更
正.MASM5.0出错信息格式如下:
源程序文件行:WARNING/ERROR错误信息码:错误描述信息
其中,错误描述信息码由五个字符组成,第一个是字母A
,表示汇编语言程序出错;接着有一个数字指明出错类
别:'2'为严重错误,'4'为严肃警告,'5'为建议性警告,
最后三位为错误编号.
错误编号
错误描述
0
Block nesting error
...
阅读全文 |   作者:stategrid | 评论次数(3) | 浏览次数(1401)

[2008-10-03 20:55] 检测点11.4

下面的程序执行后,(ax)=?

mov ax,0       ;  ax=0
push ax        ;  ax=0
popf           ;  ax=0
mov ax,0fff0h  ;  ax=0fff0h
add ax,0010h   ;  ax=0,注意,上述两条语句用于更改状态寄器的值
pushf          ;  ax=0
pop ax         ;  ax=3047H,将状态寄存器中的值放在ax中,状态寄存器中的值为什么会是3047H,不用管它,不影响结果。
and al,11001010b   ;al=45h
and ah,000...
阅读全文 |   作者:programmer | 评论次数(1) | 浏览次数(875)

[2008-06-02 22:17] 第十一章检测题分析

1.下列指令对标志寄存器内容产生影响,但不会改变参与其执行过程的其它寄存器内容的是___2___。 
 1、 loop s 
 2、 cmp cx,0 
 3、 jcxz s 
 4、 div cx 

分析:loop s 改变了cx的值,有减法蕴含在其中,肯定对FR有影响
      cmp cx,0 首先要执行减法,所以对FR有影响,但是此指令只和cx有关,而且cx的值没变,正确
      jcxz s 此指令是根据cx的值判断是否跳转,没有影响FR,其他寄存器也没有受到影响
      div cx 除法对FR有影响,而且可能会改变ax,dx中的值

2.对于In...
阅读全文 |   作者:mark0289 | 评论次数(1) | 浏览次数(759)

[2008-10-11 21:23] 检测点11.3、11.4和试验11

书上的两个结论:
1:如果因为溢出导致了实际结果为负,那么逻辑上真正的结果必然为正。
2:如果因为溢出导致了实际结果为正,那么逻辑上真正的结果必然为负。
------------------------------------------------------------------------------------------------
书上说只要稍微分析一下就能够得出上述结论,可开始时我怎么想都想不通,并且越想越头疼。后来从以下思路入手,才最终想明白。
思路如下:首先实际结果不可能是0,否则不可能产生溢出。其次,之所以产生溢出,是因为所得结果超过了当前存储结果的寄存器所能表...
阅读全文 |   作者:lwbfq | 评论次数(0) | 浏览次数(866)

[2008-04-12 17:09] 纯Dos下的汇编操作环境

有意思的程序,能在xp下实现纯dos环境,享受直接访问硬件乐趣。
还带有些小工具可以备份系统。
我这里xp下配置成功,不错,试试。
下载地址为这个地方。
http://pickup.mofile.com/6851943249276875
广告太烦,有一个小小的地方 
下载文件(IE浏览器)  下载文件(非IE浏览器)  
就是下载地方了。
或者用提取码6851943249276875提取

纯dos环境里面带了 masm 5.0 link 和edit可以进行asm编程

还有ghost11可以备份系统,ntfdos可以在dos访问ntfs分区

感谢wdm网友的提示...
阅读全文 |   作者:feiwei | 评论次数(43) | 浏览次数(9058)

[2008-08-15 16:04] 课程设计一

assume cs:code,ss:zhan
data segment
  db 10 dup (0)             ;[0]-[8],[9]    盛放转化后的字符串,其中[9]置0
  db 6 dup (0)             ;[10][11],[12]   保存变量用 [10][11]低位,[12]颜色,[13]行号,[14][15]保留
data ends
gongsi segment
  ;年份        
  db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
 ...
阅读全文 |   作者:shifuzhuang | 评论次数(2) | 浏览次数(977)

[2007-12-27 12:36] 【改】课设一部分--dd类型数据显示

在刚才发的程序里面两个地方都设置了es,多次更改段地址es,感觉不是很爽,想了半天终于找到了一个办法。
原显示子函数show_str是读取的ds段的数据显示,数值显示子函数dtoc也是把ds段的数据重写,然后由show_str显示,也就是说ds段的数据是暂存的。因为栈也算是暂时存储数据的,那么我们把栈的一部分拿出来用作这个功能应该可以吧,并且还能免去es的多次设置。
正好栈的访问是栈顶开始的,而程序中要的是栈底,两者不冲突。
那好了,我们定义一个16个字的栈,应该够用了吧(栈是以字为单位访问的,暂存的数据是以字节为单位访问的)。
因为使用bp,此时的默认段地址是ss,所以程序基本没什么...
阅读全文 |   作者:mouse | 评论次数(3) | 浏览次数(549)

[2008-01-01 17:15] 第十章课设一

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,80353...
阅读全文 |   作者:mouse | 评论次数(4) | 浏览次数(1113)

[2008-03-10 16:56] 课程设计1:在屏幕上显示poweridea公司的数据

课设一通过编译,在我的笔记本上显示总有错误,我还以为我的程序逻辑有什么问题呢,反复跟踪了半天,还是没发现问题,最后想起来我的笔记本是宽屏的,是不是显存地址不太一样?明天去办公室测试下就知道了,呵呵,我确信,应该是没有什么问题的
   课设一看起来好像挺复杂的,其实经过自顶而下、逐项分解、模块化设计后,还是蛮简单的,程序设计了四个循环,每个循环显示一项内容,本来考虑放到一个大循环的,后来想到这样用到的堆栈空间较多,压栈、出栈有些麻烦,还是用运行速度换存储空间算了,于是用了这四个循环,这样程序的条理感觉更清楚些。我的感觉是,要么用速度换空间,要么用空间换时间,程序就是数据与结构的结合嘛,关键是要...
阅读全文 |   作者:pirates | 评论次数(7) | 浏览次数(1392)

[2008-07-22 15:39] 课设一:要想快,讲规范,调试排错也关键!

-----------------------------------程序运行测试图----------------
课题分析:
一、数据
A、年份,4字节字符,须增加0结尾识别值;B、年收入总额,4字节数据,需转换成10进数字ASCII码,同时,因转10进制后其ASCII码占位最大需占用10位,加上结束识别位共占11位,共需占11字节,原4字节将远不能满足替换;C、年人数,2字节数据,转换后需占用6字节;D、年人均收益,因是dword/word计算求得,为防溢出,取与总额同位。
根据以上情况,原数据区空间,将难以保证数据转换ASCII后空间占位的需要,需另建适合的数据区,并拷贝数据。...
阅读全文 |   作者:asm_sande | 评论次数(18) | 浏览次数(3584)

[2008-10-07 16:46] 1

[2008-07-22 15:39]  课设一:要想快,讲规范,调试排错也关键! 

-----------------------------------程序运行测试图---------------- 
课题分析: 
一、数据 
A、年份,4字节字符,须增加0结尾识别值;B、年收入总额,4字节数据,需转换成10进数字ASCII码,同时,因转10进制后其ASCII码占位最大需占用10位,加上结束识别位共占11位,共需占11字节,原4字节将远不能满足替换;C、年人数,2字节数据,转换后需占用6字节;D、年人均收益,因是dword/word计算求得,为防溢出,取与总额同位。 
根据以上...
阅读全文 |   作者:zhifei | 评论次数(2) | 浏览次数(576)

[2008-10-31 11:45] 第十章 实验10 编写子程序(3)

数值显示
子程序描述
名称:dtoc
功能:将word型数据转变为表示十进制数的字符串,字符串以0结尾
入口参数:(ax)=word型数据
出口参数:无
应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来.在显示时我门调用本次实验中的第一个子程序show_str.
 
assume cs:code,ds:data
data segment 
 db 10 dup(0)
data ends
code segment 
 start:mov ax,12666
       mov bx,data  
       mov ds,bx
  ...
阅读全文 |   作者:754754563 | 评论次数(2) | 浏览次数(837)

[2007-11-17 11:07] 实验十

一题:
assume cs: code
data segment
     db 'Welcome to masm!',0
data ends


code segment
start :
     mov dh,8
     mov dl,3
     mov cl,2
     mov ax,data
     mov ds,ax
     mov si,0
     call show_str

     mov ax,4c00h
     int 21h
;在屏幕的dh行dl列显示特定的字符串
;低字节存放字符,高字节存放字符属性
;si看存放...
阅读全文 |   作者:lijangwei | 评论次数(1) | 浏览次数(600)

[2007-10-24 17:09] 第10章检测点10.5

检测点10.5(1)
assume cs:code
stack segmeng
  dw 8 dup(0)
stack ends
code segment
  start:mov ax,stack
        mov ss,ax
        mov sp,16
        mov ds,ax
        mov ax,0  ;此时ax=0
        call word prt ds:[0eh] ;此时,发生push ip、jmp动作,而此时ip值指向下一个指令:inc ax,而ds段此时和stack段重合,故,ds:[0eh]此时内容为刚刚压栈的IP...
阅读全文 |   作者:mqmelon | 评论次数(1) | 浏览次数(1441)

[2007-12-21 15:39] 可爱的指令----nop

那天网上有人问nop指令的作用是什么,我就想起来一条,就是通过nop指令的填充(nop指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数。

后来,baidu了一下,发现有许多答案:

1)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟:);

2)i/o传输时,也会用一下nop,等待缓冲区清空,总线恢复;

3)清除由上一个算术逻辑指令设置的flag位;

4)破解:)对于原程序中验证部分使用nop来填充,使验证失效;

5)有一个朋友说的比较厉害--在航天飞机控制程序中防止程序跳飞!
解释如下:在空...
阅读全文 |   作者:Wednesday | 评论次数(3) | 浏览次数(1335)

[2008-07-06 10:21] Debug命令用法

Debug命令用法

    Debug 原意是杀虫子。这里是机器调试工具。其实,Debug的由来,还有一则趣闻,在早期美国的一计算机房中,科学家正在紧张的工作。同时,许多台大型的计算机也在不停的运行着。大概是由于,机器过热,引来许的小虫子,以至于,计算机无法正常运行。科学们,只好停下来,捉虫子...虫子捉完了,计算机运行也正常了,后来,这个名词就沿用至今了.... 虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好!接下来,我们就一起学习Debug在各方面的运用吧!(在杀毒、加解密、系统...)下面我和大家一起学习一些,Debug的用法,虽然,现在好的软...
阅读全文 |   作者:towersimper | 评论次数(2) | 浏览次数(1136)
页码数(1):  1