- [zyc969] 写第二空时的思维是正确的,但第一空是错误的,第二空必须用到第一空的数据,所以第二空也是错的。 我十 05/20 22:00
- [tomato] 两道题都做错了? 认真态度有待提高啊! 05/20 20:57
- [tomato] 是的,这本书就是要一字一句地读才行。 05/18 22:54
- [zyc969] 嗯,明白了。 05/18 13:46
- [tomato] 应该是第二道题做错了。 05/17 08:57
- [tomato] 学习质量第一。 05/15 23:22
- [tomato] 对了,博主的博客中没有动态显示,博主可以观察一下其它学习者的学习博客,好像是参加了汇编语言学习活动的 05/13 23:20
- [tomato] 做的没问题,不过,这才是第一章,当然还是比较简单的,虽然后面的章节也不难,难的是是否能够一直坚持下去 05/13 23:19
[2007-12-21 15:39] 可爱的指令----nop
后来,baidu了一下,发现有许多答案:
1)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟:);
2)i/o传输时,也会用一下nop,等待缓冲区清空,总线恢复;
3)清除由上一个算术逻辑指令设置的flag位;
4)破解:)对于原程序中验证部分使用nop来填充,使验证失效;
5)有一个朋友说的比较厉害--在航天飞机控制程序中防止程序跳飞!
解释如下:在空...
[2008-03-30 19:50] 是否可以在自己写的INT 0H中断例程结束处用IRET来返回调用程序
地址:http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1013&qkSg=2&qID=13334
问题:
===============================
书上的例子使用的是调用另外的中断mov ax,4c00h int 21h来退出,如果用iret来出栈为什么不能退出呢?
溢出程序:
code segment
begin : mov ax,data
mov ds,ax
mov ax,1000h...
[2008-08-23 19:20] 实验10.3-数值显示
;;;*****************************************************************************
;;;子程序描述:
;;;名称:dToC
;;;功能:将word型数据转变为表示十进制数的字符串,字符串以0结尾
;;;参数:...
[2008-08-06 12:18] 堆和栈的区别
一直就搞不清出这个问题,今天上网想起来,随即搜了搜,找到了一些资料。不知源作者是谁。姑且“拿来主义”一下,呵呵。
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两...
[2008-04-29 15:09] 函数指针数组
关于函数指针数组的定义方法,有两种:一种是标准的方法;一种是蒙骗法。
第一种,标准方法:
{
分析:函数指针数组是一个其元素是函数指针的数组。那么也就是说,此数据结构是是一个数组,且其元素是一个指向函数入口地址的指针。
根据分析:首先说明是一个数组:数组名[]
其次,要说明其元素的数据类型指针:*数组名[].
再次,要明确这每一个数组元素是指向函数入口地址的指针:函数返回值类型 (*数组名[])().请注意,这里为什么要把“*数组名[]”用括号扩起来呢?因为圆括号和数组说明符的优先级是等同的,如果不用圆括号把指针数组说明表达式...
[2008-08-20 13:07] 是幻想,但,也是梦想!
大一结束了,我颓废了1.5个学期,到最后的0.5个学期才醒悟,才开始为自己的将来打算。我高中时被骗了,谁说大学轻松?谁说考到大学就解脱了?那只是考上大学之后放弃理想的人的说法!大学一点也不轻松,有很多事要想,要学,要做!有人想着怎样认识更多朋友,扩大自己的圈子;有人学着提高自己的能力,组织能力、策划能力、交际能力...很多很多;有人要做自己觉得有意义的事。大学很多事要做,是的,不轻松。我一想到自己...
[2008-08-27 15:59] 两个疑问,求解!
执行第三条指令add AL, 90H后,AL=A0H,我算的结果是:CF=0,OF=0,SF=0,ZF=0,PF=1
我不明白的是,为什么答案里SF=1?
然后我有仔细的翻看了SF一节,对于数值运算时应该按有符号数还是无符号数有了这样的想法:
书中第204页提到:“CPU在执行add等指令时,就已经包含了两种含义,也将得到用一种信息来记录的两种结果”,因此,是不是在进行运算时, 8位寄存器的表示范围始终是[-128,127],而不是[0,255],所以才有即使AL=A0H < 255也有SF=1,但如果这样的话,那 A0H=160D>127,岂不是也会产生...
[2008-08-26 04:30] 检测点11.1
sub al,al ZF=1 PF=1 SF=0
mov al,1 ZF=1 PF=1 SF=0
push ax ZF=1 PF=1 SF=0
pop bx ZF=1 PF=1 SF=0
add al,bl ZF=0 PF=0 SF=0
add al,10 ZF=0 PF=1 SF=0
mul al ...
[2008-08-26 03:23] 程序学习——字符反向输出
;;;程序功能:任意输入几个字符(最多能输入9个),按回车则倒着输出!
;;;编程步骤:
;;; 1: 建立缓冲区,为输入字符串(最多能输入9个)
;;; 2: 取缓冲区的首地址,以便后面进行"寄存器间接寻址方式"
;;; 3: 利用"寄存器间接寻址方式"取得实际输入字符个数,以便确认循环次数
;;; 4: 利用"寄存器间接寻址方式"输入字符串的最后一个字符
;;; 5: 利用LOOP指令和2号显示功能来进行倒着显示
;;;*****...
[2008-08-24 14:12] 补码的原理
理解关键点:模
1.百度百科_补码:http://baike.baidu.com/view/377340.htm(代数解释)
2.补码的时钟原理:http://way79.spaces.live.com/blog/cns!a95f7b8848aa2732!467.entry
3.补码原理及随想:http://www.blogjava.net/geyinglong/archive/2007/11/01/157401.html?opt=adm...
[2007-10-20 19:09] 一个感染 com 的病毒
介绍下这个病毒的结构,这个病毒是感染com文件的(古老的一种文件格式,但是很简单),由于是实模式下的,所以我们就可以添删com而不用担心别的事情,程序有感染的代码,有破坏的代码,因为没有自动查找的代码程序暂时只能感染test.com这个co并删除del.txt这个文件,但有点不爽的是这个程序没有判断是否已经感染,结果就造成重复感染,有兴趣的可以加上这...
[2008-06-20 20:16] 台湾一校长的演讲: 震动所有中国人<转>
我这里特别强调的是国家观念。1.
我常常给我的学生讲一个故事:我们有一天出去旅行,忽然间暴风雨来了。我们没地方避风躲雨,孩子们向前跑,一看前面有个草棚,大家“哗”地冲了进去,一冲进去大雨就来了。大家好高兴,“哇,今天运气不错哟,刚刚下雨就看到这个草棚,可以不被雨淋了。”可是,由于草棚太破旧,受到大雨冲击后,即将倒塌,怎么办?
“扶住它,不能让房子倒塌”。在这种状况下,我很有感慨,同学们,你们说是我们需要房子呢,还是房子需要我们呢?(掌声)我看是我们需要这座房子。这座房子就是我们的国家,再破再烂是我们的家,再穷再破,是我们的家,我们要爱她!(...
[2007-10-12 15:34] cpu 保护模式(转)
程序运行的实质是什么?其实很简单,就是指令的执行,显然CPU
是指令得以执行的硬件保障,那么CPU如何知道指令在什么地方呢?
对了,80x86系列是使用CS寄存器配合IP寄存器来通知CPU指令在内存
中的位置.
程序指令在执行过程中一般还需要有各种数据,80x86系列有DS、
ES、FS、GS、SS等用于指示不同用途的数据段在内存中的位置。
程序可能需要调用系统的服务子程序,80x86系列使用中断机制
来实现系统服务。
总的来说,这些就是实模式下一个程序运行所需的主要内容
(其它如跳转、返回、端口操作等相对来说比较次要。)
第二:保护模...
[2009-04-25 09:45] 第二章一道选择题
1、 8086CPU采用“段地址*16+偏移地址=物理地址”的寻址模式,所以内存是由一个一个的段组成,每一个段有一个段地址。
2、 物理地址为ffff0H的内存单元的偏移地址可能为ffffH。
3、 一个段的大小可以是8Byte。
4、 在一段没有任何跳转指令的程序中,超出64K的部分将不会被执行。
我晕哦,这道题折腾了半天!到底选什么啊?...
[2009-07-26 16:04] 实验九,没用上jmp jcxz等命令。。。
data segment
db 'welcome to masm!'
db 00000010b,00100100b,01110001b
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,800h
mov es,ax
mov ax,0
mov di,16
mov cx,12
s:add ax,160
loop s
add ax,64
mov bx,ax
mov cx,3
s1:mov si,0
mov dx,cx
mov cx,16
s0:mov al,[si...
[2009-07-26 00:13] 实验七
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,19...
[2009-07-30 02:03] 实验十 第一题,
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
show_str:mov ax,0b800h
mov es,ax
mov al,160
mul dh
add al,dl
add al,dl ...
[2009-07-30 19:28] 实验十 第二题,
code segment
start:mov ax,4240h
mov dx,000fh
mov cx,0ah
call divdw
mov ax,4c00h
int 21h
divdw:push ax
mov ax,dx
mov dx,0
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
ret
code ends
end start...
[2010-07-22 09:51] 关于PSP的一点知识
偏移 段
-----------------------
| |
| |
|程序和所有的程序段 |
| |
| |
| |
| |
|---------------------|0000:00FFH CS和SS ...
[2013-05-15 12:51] 关于栈的几点疑问,盼解答
截止到目前,栈段都是我们自己定义的,关于栈顶,也只是提供一个ss:sp指向,cpu只是知道当前栈顶的地址,既不知道这个栈的起始位置和结束位置,也不知道这个栈的大小,换句话说,cpu是不知道我们假想的栈的,也就是任何一段内存都可以当做栈,这个栈既可以很大,又可以很小既然如此,因为CPU自身并不知道我们定义的栈起始位置和结束位置,那么又何来栈顶超界的说法呢?第一章我们知道,8086cpu的内存空间地址是00000到9FFFF,难道说栈顶超界是指栈顶不在00000和9FFFF之间吗?不在这个范围之内吗?
问题2:书上说,一个栈段最大为的长度最大为64KB,如果将10000H和1ffff...