
ASM
lingang_
coding
展开
-
《汇编语言》读书笔记(1)——段寄存器DS与CS的区别
cs是值cpu执行的当前指令的段地址,ds是数据开始的段地址。通俗来讲,CS是告诉CPU,去哪个位置找内容当成指令去执行,DS是告诉CPU,去哪个位置找内容当成数据被使用,用它们的扩展名便可以知晓区别:datastring=ds codestring=csCPU要执行CS中的指令 指令用到的数据可能就存放在DS中。 你可以把数据放到CS中 但是CPU并不把它当成数据来使用,你也可以把指原创 2008-02-24 15:19:00 · 4044 阅读 · 4 评论 -
AT&T指令集
摘录网上的一篇AT&T指令总结,方便查阅~~GAS中每个操作都是有一个字符的后缀,表明操作数的大小。 C声明 GAS后缀 大小(字节)原创 2008-04-15 19:08:00 · 7127 阅读 · 7 评论 -
汇编指令速查手册
不知哪位大哥总结的,先借来用一下,免得老是翻书^_^ 数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,B原创 2008-04-02 21:06:00 · 758 阅读 · 0 评论 -
详解汇编中的原码,补码,反码
网上看的这篇文章,自认为讲的很好,对这三者之间概念模糊的可以看看.^_^也是对刺猬的 似曾相识——记录NASM中的非、与、或 的一篇补充.原文地址:http://blog.youkuaiyun.com/cxyol/archive/2006/03/21/631630.aspx 数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的原创 2008-04-08 20:21:00 · 4818 阅读 · 0 评论 -
字幕换色
贴上一篇代码,是关于改写外中断 int9来实现字幕换色assume cs:codestack segment db 128 dup(0)stack endsdata segment dw 0,0data endscode segmentstart: mov ax,stack mov ss,ax mov sp,128 mov ax,data mov原创 2008-03-07 15:35:00 · 627 阅读 · 0 评论 -
写一个中断例程实现loop指令
问题:用7ch中断例程完成loop指令的功能。应用举例:在屏幕中间显示80个‘!’。为了模拟loop指令,7ch中断例程应具备下面的功能:(1)dec cx (2) 如果cx不等于0,转到标号s处执行,否则向下执行。 那么中断例程如何得到标号s的段地址和偏移地址? 请看下面一段代码: mov ax,0b800h mov es,ax mov di,1原创 2008-03-06 13:17:00 · 1252 阅读 · 0 评论 -
访问CMOS RAM
在看书过程中遇到一个问题:以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。我们知道 CMOS RAM 中存放着当前的时间:年,月,日,时,分,秒。这6个信息的长度都为1个字节,存放单元为: 秒:0 分:2 时 :4 日:7 月:8 年:9 这些数据以BCD码的方式存放。当我们从CMOS RAM的8号单元中读出一个字节后,进行如下处理原创 2008-03-06 21:01:00 · 909 阅读 · 0 评论 -
《汇编语言》读书笔记(9)——0号中断的处理程序
照着王爽的书里面的代码依样画葫芦,写下除法溢出时的0号中断处理程序。代码如下:assume cs:codecode segmentstart: mov ax,cs mov ds,ax mov si,offset do0 ;设置ds:si指向源地址 mov ax,0 mov es,ax mov di,200h ;设置es:原创 2008-03-05 15:48:00 · 850 阅读 · 1 评论 -
《汇编语言》读书笔记(8)——用条件转移指令进行大小写字母转换
问题:将以0结尾的字符串的小写字母转换成大写字母。网上看的一个算法很巧妙。代码如下: assume cs:codedata segment db "Beginners All-purpose Symbolic Instruction Code.",0data endscode segmentstart: mov ax,data mov ds,ax mo原创 2008-03-04 20:42:00 · 1324 阅读 · 0 评论 -
除法溢出问题
第10章的实验二的问题:这类溢出问题总结起来就是说如果除法的商太大(寄存器溢出),应该如何解决?我在网上各地收集了众家高手的只言片语,如下:1.如何判断溢出:如果被除数高位的数值比除数大,那么会产生溢出。比如dx:0010H,ax:2343H,除数cx:0004H,dx>cx,会产生溢出。2.公式理解:解决此类溢出王爽的书中提到的公式是 X/N=int(H/N)*65536+[re转载 2008-03-01 22:17:00 · 6594 阅读 · 1 评论 -
《汇编语言》读书笔记(7)——在屏幕的指定位置显示字符串
assume cs:codedata segment db Welcome to masm!,0data endscode segmentstart: mov dh,8 ;行号 mov dl,3 ;列号 mov cl,2 ;属性 mov ax,data mov ds,ax mov si,0 call show原创 2008-03-01 19:34:00 · 2189 阅读 · 1 评论 -
《汇编语言》读书笔记(5)----在80*25彩色字符模式下显示字符串
学汇编快一个礼拜了,终于可以在显示器上看到编写出来的算法的效果了~~这个对80*25 彩色字符模式下显示字符串的算法参考了网上的资料,是目前写的比较一个比较完整的算法。代码如下: assume cs:code,ds:data,ss:stackdata segment db welcome to masm! ;定义要显示的字符串(共16字节) db 12h,24h原创 2008-02-29 14:56:00 · 1787 阅读 · 0 评论 -
《汇编语言》读书笔记(6)——解决子程序与主程序使用的寄存器的冲突
将data段的字符串改成大写字母,以0标志字符串的结束。代码如下: assume cs:codedata segment db word,0 db unix,0 db wind,0 db good,0data endsstack segment dw 8 dup(0)stack endscode segmentstart: mov原创 2008-02-29 22:34:00 · 1162 阅读 · 0 评论 -
《汇编语言》读书笔记(4)——一个奇怪的程序
assume cs:codesgcodesg segment mov ax,4c00h int 21h start: mov ax,0s: nop nop mov di,offset s mov si,offset s2转载 2008-02-28 22:15:00 · 817 阅读 · 0 评论 -
《汇编语言》读书笔记(3)----jcxz指令的巧妙运用
读到《汇编语言》第9章,一个有关jcxz指令的算法觉得很妙,问题如下:利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后将它的偏移地址存储在dx中。代码: assume cs:codesgcodesg segment start: mov ax,2000h mov ds,ax mov bx,0 s:原创 2008-02-28 21:20:00 · 4480 阅读 · 2 评论 -
《汇编语言》读书笔记(2)----and,or在大小写转换的巧妙运用
王爽老师的《汇编语言》读到第7章,发现一个很有趣的例子。题目如下:在codesg中填写代码,将datasg中的第一个字符串转化为大写,第二个字符串转化为小写。assume cs:codesg,ds:datasgdatasg segment db BaSiC db iNfOrMaTiOndatasg endscodesg segment start:code原创 2008-02-26 22:13:00 · 2273 阅读 · 2 评论 -
ip改变的次数问题
下面的三条指令执行后,cpu几次修改ip,都是在什么时候,ip最后的值为多少?mov ax,bxsub ax,axjmp ax解答如下:1.cs:ip->确定指令地址,把指令读入指令缓冲器 2.ip自动增加 3.执行缓冲区中的指令 4.进行下一条指令循环 所以mov,sub指令只在2处改变了一次。而jmp指令在2和3处分别改变了一次。 所以检测点应该是4次改变ip。原创 2008-02-23 22:21:00 · 1303 阅读 · 2 评论 -
位操作指令小结
这类指令包括逻辑运算指令、移位指令和循环指令。1.逻辑运算指令8086/8088指令系统的逻辑运算指令有“与”(AND)、“测试”(TEST)、“或”(OR)、“异或”(XOR)和“非”(NOT)五条。除了“非”指令对状态标志位不产生影响外,其余四条指令对状态标志位均有影响。这些指令将根据各自逻辑运算的结果影响SF、ZF和PF状态标志位,同时将CF和OF置“0”,但AF的值不确定。原创 2008-04-20 20:11:00 · 3509 阅读 · 0 评论