

- [游客] 博主真是我偶像啊,精神可嘉,值得学习!!! 01/30 01:53
- [游客] 不错,但还是有点浑 04/18 21:30
- [游客] 楼主的学习精神可佳 在下佩服佩服 希望你有更多好文章发表 让我们大家共同进步 03/19 23:48
- [游客] 很好!! 这种精神值得学习 发扬! 11/28 08:52
- [nono] 我刚学汇编,很有帮助,写了。。。 10/31 19:33
- [游客] 谢谢了,哈 04/18 17:02
- [游客] 很好!对我很有帮助! 03/11 21:51
- [游客] 大家共同促进中国的计算机事业吧! 02/27 19:41
- [gjcqfdy] 我也在用emu8086 由于在做实验七的时候发现emu8086好像不支持 bx.idata[si]形 02/16 00:15
- [laoshu0824] 太好了,,,我很仔细的读了王爽老师的第一章,,不过看了这篇文章侯,,发现有几个知识点我还是没有注意到 12/15 15:42
- [yc2010] 这个问题是实验16中的代码不懂。 table: dw sub1,sub2,sub3,sub4 09/07 21:55
- [lxc345] 谢谢!!! 希望以后多多指教啊. 05/06 16:07
[2007-12-10 15:47] BIOS和DOS中断大全
;-)
中断INT 21H :
1、字符功能调用类(Character-Oriented Function)
01H、07H和08H —从标准输入设备输入字符
02H —字符输出
03H —辅助设备的输入
04H —辅助设备的输出
05H —打印输出
06H —控制台输入/输出
09H —显示字符串
0AH — 键盘缓冲输入
0BH —检测输入状态
0CH —清输入缓冲区的输入功能
(1)、功能01H、07H和08H
功能描述:从标准输入设备(如:键盘)读入一个字符。该中断在处理过程中将一直处于等待状态直到有字符可读为止。该输入还可被重...
[2007-12-12 08:46] 汇编语言超浓缩教程(转)
----------------
原文:
“ 哎哟,哥们儿,还捣鼓汇编呢?那东西没用,兄弟用VB"钓"一个API就够你忙活个十天半月的,还不一定搞出来。”此君之言倒也不虚,那吾等还有无必要研他一究呢?(废话,当然有啦!要不然你写这篇文章干嘛。)别急,别急,让我把这个中原委慢慢道来:一、所有电脑语言写出的程序运行时在内存中都以机器码方式存储,机器码可以被比较准确的翻译成汇编语言,这是因为汇编语言兼容性最好,故几乎所有跟踪、调试工具(包括WIN95/98下)都是以汇编示人的,如果阁下对CRACK颇感兴趣……;二...
[2007-12-30 14:46] 计算N!
code segment
start:
mov ah,0
mov al,3
push ax
call recursion
pop ax
mov ax,4c00h
int 21h
;栈传递N值
;子程序的局限:N!<= 0xFFFFH
recursion:
push bp
push ax
mov bp,sp
...
[2007-12-12 09:28] 透过汇编另眼看世界之类成员函数指针
参考文献:
1。《C++ Common Knowledge: Essential Intermediate Programming》By Stephen C. Dewhurst
“成员函数指针并不是指针”该如何理解呢?通过汇编代码我们可以更深入的理解这句话的含义。
前言:在CSDN论坛经常会看到一些关于类成员函数指针的问题,起初我并不在意,以为成员函数指针和普通的函数指针是一样的,没有什么太多需要讨论的。当我找来相关书籍查阅了一番以后,突然意识到我以前对成员函数指针的理解太过于幼稚和肤浅了,它即不像我以前认为的那样简单,它也不像我以...
[2008-04-16 14:39] 实验16 编写包含多个功能子程序的中断例程
采用两种方法:
方法一:查表。
充分体会数据标号作用,为此,调整了安装程序的结构,把需要安装的数据放在前面,感觉这样更容易理解些。
方法二:比较。
用通过比较功能号进行转移的方法,可能很多人不屑于这个方法,但对于这个小实验而言程序结构也很清晰。
(当然如果用这个方法,就失去了在本章做这个实验的意义,放在前面几章也可以做出来的。)
---------------------------------------方法一:查表-----------------------------------
assume cs:code
code segment
setscree...
[2008-03-04 08:53] assume的作用探讨【转】
p278 16.2小节中的内容。
http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=free&kind=1220&qkSg=2&qID=7172&readSg=1
关于assume的作用,许多人都简单的解释说,这是告诉编译器哪一个段和哪一个段寄存器相关联。举个简单例子来说:
assume cs:code, ds:data
这是告诉编译器cs和code关联,ds和data关联,...
[2008-03-10 02:29] 实验16 编写包含多个功能子程序的中断例程
===============CODE=====安装程序====================
assume cs:code
code segment
table dw 16+offset ClearScreen-offset CallSubProgram,0020H
dw 16+offset SetForegroundColor-offset CallSubProgram,0020H
dw 16+offset SetBackgroundColor-offset CallSubProgram,0020H
dw 16+offset Scroll-...
[2008-05-07 18:13] 自己用汇编语言写的一个病毒(源码)(转载)
如果您希望学习汇编语言,用这个程序作为入门指导倒是比较合适的。
染毒文件会被打上“CR”的标记,我们姑且称它为CR病毒吧。
baseoff equ 107h
code segment
assume cs:code,ds:code,es:code,ss:code
org 100h
main:
mov ax,offset begin
jmp ax
...
[2008-04-14 10:19] INT9子程序分析
;=====================================
the9:
push ax
push es
mov ax,0b800h
mov es,ax
pushf ;标志寄存器压栈
pushf
pop ax
and ah,11111100b...
[2008-05-06 23:45] 第十五章学习笔记
2.在PC系统中,外中断源一共的两类:
(1)可屏蔽中断:可屏蔽中断是CPU可以不响应的外中断。CPU是否响应可屏蔽中断,要看标志寄存器的IF位的设置。当CPU检测到可屏蔽中断信息时,如果IF=1,则CPU要执行完当前指令后响应中断,引发中断过程;如果IF=0,则不响应可屏蔽中断。
可屏蔽中断引发的中断过程:
...
[2008-05-06 18:22] 这儿写文章不如论坛发帖子舒服
我直接把帖子连接复制过来了
7FFFH,8000H,9FFFH 这类地址是怎么来的?
http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1002&qkSg=3&qID=15155&readSg=1
8088CPU,数据总线为8,传输89D8,怎么会传输8次呢
http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1002&qkSg=3&qID=15156&readSg=1
问个关于 debug下 a命令的问题
http:/...
[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-05-06 09:06] 试验12
(1)将中断处理程序复制到正确的位置(复制到从0000:0200开始处)
(2)设置中断向量表项中的值,使它指向中断处理程序的地址
(3)编写中断处理程序显示字符串"divide error"
源程序:
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset d0 ;ds:si源程序地址
mov ax,0
mov es,ax
mov di,200H ;es:di中断处理程序的地址
mov cx,offset d0end-offset d0;中断程序的长度
...
[2008-04-14 00:23] 实验9
根据提供的实验材料知识得到如下信息:
1.80*25彩色字符模式显示缓冲区第0页内存地址空间的段地址为:B800H
2.编程要求的对应的字符串属性字节如下:
绿色 00000010B=02H
绿底红字 00100100B=24H
白底蓝字 01110001B=71H
3.所要求显示的字符串为16个字符,则以下显示方式在80*25模式中是屏幕上下左右居中:
第12行第32列开始显示绿色字符串
第13行第32列开始显示绿底红色字符串
第14行第32列开始显示白底蓝色字符串
...
[2008-04-13 07:56] 对8086内存的思考
但用DEBUG可以看到 FFFF:00FF-FFFF:0179 而且数据不是连续为零或1,此段内存是有意义的。那么,多出的EFH个单元写在哪了呢?会不会把CS*16+IP的结果中多出的最高位舍掉了呢?也就是DEBUG中“D FFFF:00FF”和“D 0000:00EF"一样呢?
检验后发现两个段不一样。
那到底是为什么呢?思考中…………
附图片...
[2008-02-19 01:01] 相同的汇编指令VS不同的机器代码 分析
03c0 add ax,ax
简单的来说,就是 01 03都是add
01d8 add ax,bx
03c3 add ax,bx
简单的来说
就是 01 03都是add
d8 c3 是bx+ax 结果放入 ax
和ax+bx 结果放入 ax
具体分析在图里
谁来写篇仔细的教程啊,偶 ,困了,晕了,睡了。
看懂的跟些自己造出来的类似情况。...
[2008-04-12 02:26] 实验10(2)解决除法溢出的问题
公式X/N=int(H/N)*65535+[rem(H/N)*65535+L]/N
int(H/N)*65535得出的值就是(X/N)的商的高4位,
也就是说(H/N)的到的商将最终存储在dx中,(我在思考的时候认定此次除法的除数是16位的,其实可以是8位的,8位的可能会减少寄存器的操作,有时间再写写)
而[rem(H/N)*65535+L]/N求出的商即为(X/N)的商的低4位,所得出的余数就是(X/N)的余数
即(H/N)所得到的余数放在dx中,将L放在ax中,再次进行除数为16位的除法
我以书中...
[2008-03-30 10:51] 实验2-----第(2)题
--------------------------------------------------------------
以下是把指令输入到0b39:0100(保持与书上一致),第一次跟踪情况如下:
-------------------------------------------------------------
-a 0b39:0100
0B39:0100 mov ax,2000
0B39:0103 mov ss,ax
0B39:0105 mov sp,10
0B39:0108 mov ax,3123
0B39:010B push ax
...
[2008-04-10 16:07] 实验9 根据材料编程(两种方法)
assume cs:code,ds:data
data segment
db 'welcome to masm!'
db 2,36,1
data ends
code segment
start: mov ax,0b878h
mov es,ax ;...
[2008-04-09 13:13] 实验7
(1)要复制年份到table中,年份是用四个字节表示的,一共有21个年份,需要用到双层循环,外层循环控制复制的年份(21次),内层循环控制每个年份的具体复制(4次)
(2)data段中的收入用dd来定义的,即也是四个字节,故想到在复制年份的时候,一起将收入的数据复制到table中,考虑到用的寄存器比较多,因而用栈暂时保存外层循环cx的次数
(3)人均收入需要用除法,将收入的低16位保存在ax中,高16位保存在dx中,用[di+idata]的方法指向data中雇员人数的地址,进行除法后商为人均收入在ax中,然后复制到table中的正确位置,然后将雇员人数也复制到table中,然...