汇编
qungxue
Let life be biautiful like summer flowers and death like autumn leaves.
展开
-
汇编语言学习笔记(1)
汇编语言的应用领域:1、适用的领域要求执行效率高、反应快的领域,如:操作系统内核,工业控制,实时系统等;系统性能的瓶颈,或频繁被使用子程序或程序段;与硬件资源密切相关的软件开发,如:设备驱动程序等;受存储容量限制的应用领域,如:家用电器的计算机控制功能等;没有适当的高级语言开发环境。2、不宜使用的领域大型软件的整体开发;没有特殊要求的一般应用系统的开发等。但是这边并没有绝对化,上面只是举几个例子。原创 2010-12-10 09:54:00 · 487 阅读 · 0 评论 -
王爽《汇编语言》实验13
<br />这边因为是试验中的第二小题,课程中已经是给出,并且也有详细的讲解,这边我们就只给出第1和3小题的参考解答:<br />(1)、这边我们给出7CH中断例程的代码和安装代码如下:<br />DATAS SEGMENT ;此处输入数据段代码 DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:原创 2011-04-28 09:36:00 · 4785 阅读 · 1 评论 -
汇编语言学习笔记(随笔记) 端口
<br />端口就是一些芯片的存储器,这些芯片有各种接口卡(网卡,显卡)、主板上的芯片接口(CPU可以通过这些芯片对我们连接的外部设备进行访问)、用来存储相关的系统信息的一些芯片,如CMOS,或者是一些进行输入输出处理的芯片。<br /> <br />CPU对端口进行统一的编址,建立统一的一个端口地址空间,每一个端口在地址空间都有一个地址。端口地址范围是0-FFFF。<br />这边我们的端口地址是怎么设定的呢?<br />这边对端口的读写指令只能用IN和OUT两种指令。<br />比如我们访问端口(书上的翻译 2011-04-28 11:14:00 · 1686 阅读 · 1 评论 -
王爽《汇编语言》17章 乱记
CODES SEGMENT ASSUME CS:CODESSTART: MOV AH,0 INT 16H ;读取键盘缓冲区的数据 MOV AH,1 ;这边是设置初始颜色为蓝色的吧 CMP AL,r JE RED CMP AL,g JE GREEN CMP AL,b JE BLUE JMP SHORT SRET RE原创 2011-06-06 12:52:00 · 2863 阅读 · 1 评论 -
汇编语言学习笔记(随笔记) 内部中断
中断过程描述:取得中断内型码N;pushfTF=0,IF=0push CSpush IP(IP)=(N*4),(CS)=(N*4+2)CPU在收到中断信息后,如果处理该中断信息,就完成一个有硬件自动执行的中断过程,程序员无法改变这个过程中所要做的工作。似乎是想说上面的中断过程是由计算机硬件自己执行的,就这样理解。中断处理程序的编写方法:保存用到的寄存器处理中断恢复用到的寄存器用iret指令返回这边iret指令的功能用汇编语言描述为:POP IPPOP CSPOPF也就是iret执行完后,我们就不用再使用上面原创 2011-04-11 11:40:00 · 935 阅读 · 0 评论 -
汇编杂乱记
1.=======================================================================DATAS SEGMENT ;此处输入数据段代码 DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码 DW 16 DUP (0)STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,STACKS MOV SS,AX原创 2011-04-12 10:19:00 · 693 阅读 · 0 评论 -
王爽《汇编语言》实验16
<br />;这边我们要设计一个中断程序,为7CH中断;这边是为显示输出提供如下功能子程序;1、清屏;2、设置前景色;3、设置背景色;4、向上滚动一行;这边首先整体的构思一下,我们假设中断例程写好,名为;SCREENSET,那么我们先安装代码指令,然后将程序的入口地址;放到0000:7CH*4-0000:7CH*4+2中,中断例程代码指令放到;0000:0200H中至于中断例程之程序,书上已经是有的了,但是;第四个功能好像是有点问题了,这边我们自己可以改过DA原创 2011-06-02 21:08:00 · 2390 阅读 · 0 评论 -
DOS上动态显示日期和时间
;我们这边的程序是要显示当前的COMS的时间,动态的……DATAS SEGMENT ;此处输入数据段代码 DB 0,0,'/',0,0,'/',0,0,' ',0,0,':',0,0,':',0,0 DB 9,8,7,4,2,0 ;这边是COMS RAM中存放时间的位置指针 DB 25 DUP (0) ;这边弄一个空间专门存放我们读取的时间信息DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS END原创 2011-05-24 22:28:00 · 3460 阅读 · 0 评论 -
汇编语言(王爽) 课程设计1
<br />这边是要将实验7的公司的数据显示在dos窗口下,这边只给出代码<br />DATAS SEGMENT ;此处输入数据段代码 db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991','1992','1993','1994','1995' ;以上是21年的21个字符串 d原创 2011-01-27 09:34:00 · 941 阅读 · 0 评论 -
王爽汇编语言 实验9
<br />在dos屏幕中输出 welcome to masm,welcome是绿色字体,to是绿底红字,masm是白底蓝字,代码示例:<br />DATAS SEGMENT db "welcome to masm"DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX mov ax,0b800h mov es,ax m原创 2011-01-20 19:42:00 · 2166 阅读 · 0 评论 -
关于汇编栈问题
在《汇编语言学习笔记(4)》中出现的将数据2266H传入到10000中代码段mov ax,1000mov ss,axmov sp,2mov ax,2266push ax出现的问题,我的机子没办法实现数据的传送,或者说是出现了错误,这边的猜测是可能因为这边的栈的设置应该是:栈的容量的设置本身是要是一个最小段,或者是最小段的倍数,这边又进行了测试:mov ax,1000mov ss,axmov sp,0010mov ax,2266push ax这样,没有出现错误,数据2266H插原创 2011-01-10 11:19:00 · 1318 阅读 · 1 评论 -
汇编语言学习笔记(4)
pop,push 寄存器,段寄存器,内存单元内存段地址单元要放到段寄存器中,要间接地:<br /> mov ax,1234hmov ds,axsub ax,ax 的机器码是两个字节,mov ax,0的机器码是三个字节,所以如果是要ax清零的话,可以使用sub ax,ax。要在10000出写入字型数据2266H,可以使用下面的代码:<br />mov ax,1000mov ds,axmov ax,2266mov [0],ax<br />也可以使用下面的代码段完成:<br />mov ax,原创 2011-01-10 10:18:00 · 438 阅读 · 0 评论 -
关于debug t1.exe出现的问题
<br />由汇编程序<br />assume cs:codesgcodesg segment mov ax,2000H mov ss,ax mov sp,0H add sp,4H pop ax pop bx push ax push bx pop ax pop bx mov ax,4c00H原创 2011-01-11 00:44:00 · 979 阅读 · 0 评论 -
汇编语言学习笔记(3)
3.380X86指令系统其指令系统可以是以下的6组:数据传送指令算术指令逻辑指令串处理指令控制转移指令处理机控制指令于数据传送指令传送指令MOV其目的操作数不能是立即码其目的操作时不能是代码段其目的操作数和源操作数不能都是段地址IP不能作为源操作数,也不能作为目的操作数立即数不能直接传送给段寄存器两个操作数必须有一个是寄存器,除了立即寻址以外MOV BP OFFSET TABLE 是直接将table的偏移地址传送给 BP交换指令 ECHGECHG OPERA1, OPERA2 两个操作数不能同时是段寄存器,原创 2010-12-21 11:19:00 · 1065 阅读 · 0 评论 -
汇编语言学习笔记(2)
段地址是指地位为0的物理地址。物理地址=段地址X16+偏移地址偏移地址是段地址的起始地址的偏移量<br />例如用16位的逻辑地址1234:3456表示的物理地址是为 12340+3456=15796H。一个物理地址可以有多个的逻辑地址来表示。原创 2010-12-16 09:49:00 · 694 阅读 · 0 评论 -
王爽《汇编语言》综合研究实验5 (3)
实现一个简单的printf函数,只需支持"%c、%d"即可 这边先看一下C中printf函数的简单例子的汇编代码,这边我们用综合研究中所搭建的简介C开发环境写一个简单的printf例子:/*** printft.c**/main(){ printf("%d",10);} 生成相应的printft.exe可执行文件,在cmd下用debug进行调试,得到对应原创 2011-06-22 11:07:00 · 4887 阅读 · 2 评论