![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编语言与微机原理
文章平均质量分 72
heavengl
这个作者很懒,什么都没留下…
展开
-
Something about Assembly language 2
<br />http://www.emu8086.com/assembler_tutorial/asm_tutorial_02.html<br />指定偏移量数据类型的前缀:<br />字节:byte ptr(或b.)<br />字(两字节):word ptr(或w.)<br />例:<br />byte ptr [BX];字节存取<br />word ptr [BX];字存取<br />某些情况下,汇编程序可以自动计算数据类型<br />----------------------------------翻译 2010-11-26 00:25:00 · 425 阅读 · 0 评论 -
Program flow control (Notes)
<br />http://www.emu8086.com/assembler_tutorial/asm_tutorial_07.html<br /> <br />1. Unconditional Jumps<br />JMP label<br />It can jump anywhere in current cs (65,536bytes)<br /> <br />2. Short Conditional Jumps<br />(1) test single flag; (2) compare numbe原创 2010-11-26 02:27:00 · 592 阅读 · 0 评论 -
Numbering systems (Notes)
http://www.emu8086.com/assembler_tutorial/numbering_systems_tutorial.html1. Decimal System1. Decimal SystemNote:2. Binary System3. Hexadecimal SystemDecimal(base 10)Binary(base 2)Hexadecimal(base 16)0000001000112001023001134010045010156011067011178100089转载 2010-11-25 21:17:00 · 421 阅读 · 0 评论 -
Something about Assembly language 1
<br />MESSAGE DB 'How do you do.',0DH,0AH,24H0Dh,0Ah: 回车换行;24h: $,DOS功能调用显示字符串用“$”作为结束符标志。 两个hello world1name "hello"org 100hjmp startmsg db ‘Hello, world!', 0start: mov si,0 next_char: mov al, msg[si]cmp al, 0je stopmov ah, 0ehmov 10hinc si原创 2010-11-25 20:38:00 · 400 阅读 · 0 评论 -
中断 INT 20H
<br />DOS中断INT20H的功能是结束程序并返回DOS。 <br /> 入口参数:CS=程序段前缀(PSP)的段地址。 IP=0000H。 <br /> 出口参数:无。 <br /> 问题: (1) 程序段前缀PSP的概念。 <br /> (2) 不能直接给CS、IP赋值,如何指定入口参数? <br />1、 程序的执行过程 <br /> <br />//search out-->Build PSP in main memory-->loading-->set DS, ES (CS,转载 2010-11-25 20:14:00 · 6378 阅读 · 1 评论 -
BIOS中断
1、INT 17H(打印机I/O调用) INT 17H中断处理程序有三个功能: 当AH=0时,把AL中的字符在打印机上打印出来。 当AH=1时,把AL中的初始化控制命令送给打印机。 当AH=2时,把打印机的状态读至AL寄存器。 D7D6D5D4D3D2D1D0忙确认有纸联机错误//超时寄存器AH中的值决定一个中断处理程序的功能,称其为"功能号"。当AH=0时调用INT 17H中断,称为"INT 17H的0号功能",可以简记为"INT 17H/0" 例1用打印机打印一串字符。 MOV转载 2010-11-25 19:58:00 · 738 阅读 · 0 评论 -
INT 10H 中断简介
<br /><br />INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内。<br />使用 INT 10H 中断服务程序时,先指定 AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用 INT 10H。<br />底下是它们的说明:AH功 能调用参数返回参数 / 注释1 置光标类型 (CH)0―3 = 光标开始行<br /> (CL)0―3转载 2010-11-25 19:38:00 · 829 阅读 · 0 评论 -
中断INT 21H
<br />int 21h -- dos功能调用 含有近100个功能,提供了应用程序所需要的大多数服务,包括打开文件、关闭文件、读文件、写文件、读键盘输入、写显示屏、读取或设置系统日期和时间,以及一大堆控制变量。通过给AH寄存器赋值,然后调用INT 21H指令,计算机就会根据AH寄存器中的值执行相应的操作给AH寄存器赋值效果如下<br /> <br />AH<br />功能<br />调用参数<br />返回参数<br />00<br />程序终止(同INT 20H)<br />CS=程序段前缀<br原创 2010-11-25 19:28:00 · 6382 阅读 · 0 评论 -
Macros (notes)
<br />http://www.emu8086.com/assembler_tutorial/asm_tutorial_10.html<br /> <br />1. like proc but not really.<br />exist only until the code is compiled.<br />after compilation, all macros are replaced with real instructions.<br /> <br />2.definition:<br原创 2010-11-26 03:26:00 · 309 阅读 · 0 评论 -
The stack in assembler (notes)
<br />http://www.emu8086.com/assembler_tutorial/asm_tutorial_09.html<br />1. <br />keep temporary data; <br />used by CALL;<br />RET--compared with IRET used in INT.<br /> <br />2. <br />PUSH-stores 16 bit value (REG/SREG/memory/immediate)(immediate for 80原创 2010-11-26 03:13:00 · 273 阅读 · 0 评论 -
汇编基础 笔记5(《汇编语言》第七章)
<br /><br />========================================<br />更灵活的定位内存地址的方法和相关编程方法<br />========================================<br />and:将相应位设为1,其它位不变<br />or:将相应位设为0,其它位不变<br />-----------------------------------<br />用R命令分析下列程序data段的地址:<br />assume ds:data原创 2010-12-05 22:33:00 · 438 阅读 · 0 评论 -
汇编基础 笔记4(《汇编语言》第六章)
程序取得所需空间的两种方法:1.在加载程序的时候为程序分配(讨论)——通过在源程序中顶一段2.程序在执行的过程中向系统申请--------------------------------------实验五(1)assume cs:code,ds:data,ss:stackdata segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segment dw 0,0,0,0,0,0,0,0st原创 2010-12-05 20:42:00 · 338 阅读 · 0 评论 -
汇编基础 笔记6(《汇编语言》第八章)
<br /><br />数据处理:<br />1. 要处理的数据在什么地方:指令执行前,可能是【cpu内部(寄存器、指令缓冲器)】【内存】【端口】<br />2. 数据多长?<br />================================================<br />bx,si,di,bp<br />只有这四个可以用在[]中进行寻址<br />且只能<br />1. 单个出现<br />2. 以四个组合出现:bx&si,bx&di,bp&si,bp&di<br />[]中出现bp,原创 2010-12-06 01:17:00 · 359 阅读 · 0 评论 -
汇编基础 笔记(《汇编语言》)
<br /><br />8088cpu数据总线的宽度是8<br />8086cpu数据总线的宽度是16<br /> <br />cpu地址总线宽度-->内存地址空间的大小<br />8086:20-->2^20=1MB<br />80386:32-->4GB<br />----------------------------------<br />A 16-bit register can store data with the value up to 2^16-1=65535<br />A 8-bit r原创 2010-12-05 00:33:00 · 555 阅读 · 0 评论 -
汇编基础 笔记2(《汇编语言》)
<br /><br />===================================<br />data segment<br />-----------------------------------<br />字单元:<br />存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。<br />高地址内存单元存放字型数据的高位字节,低地址内存单元存放字型数据的低位字节。<br />------------------------------------<br />讲10000h中原创 2010-12-05 04:22:00 · 720 阅读 · 0 评论 -
Macro vs Proc
<br />MACRO: <br />宏是具有宏的一段汇编语句序列,经过定义的宏,只写出宏名,就可以在源程序中调用它<br />由于形式上类似其他指令,所以常称其为宏指令<br />与伪指令主要指示如何汇编不同,宏指令实际上是一段代码序列的缩写<br />在汇编时,汇编程序用对应的代码序列替代宏宏指令,因为是在汇编过程中实现的宏展开,所以常称其为宏汇编. <br />Proc: <br />汇编语言中子程序间和模块间利用堆栈都是一个重要和主要的参数传递方式<br />但是利用堆栈传递参数,相对来说是比较复杂转载 2010-12-02 08:30:00 · 668 阅读 · 0 评论 -
汇编程序基本概念 笔记
<br />一、源程序格式由段组成包含若干code segment, data segment, extra segment(?), stack segment. Order is not concerned.需独立运行的程序必须有:一个代码段,指示程序执行的起始点(一个程序只有一个起始点)所有可执行性语句必须位于某一个代码段内;说明性语句可根据需要位于任一段内通常程序还需要一个堆栈段<br />二、语句格式<br />(1)executable code/执行性语句表达处理器指令(硬指令)/Machine原创 2010-11-30 21:03:00 · 1505 阅读 · 0 评论 -
几个关于Ram问题
<br /> 1. Why we select 55h and 0aah instead of 00h and 0ffh?<br /><br />There are few cases of RAM failure.<br />a)Dead bit, output always "1" or always "0".<br /> you can test it with "ff" "00" "AA" 55".<br />b)Short two bits<br /> "FF" and "00" ca原创 2010-11-30 14:41:00 · 508 阅读 · 0 评论 -
Procedures
<br />1. name PROC<br />;;;<br />RET<br /> name ENDP<br /> <br />PROC and ENDP are compiler directives, so they are not assembled into any real machine code. Compiler just remembers the addr of procedure.<br /> <br />2. Several ways to pass parameters t原创 2010-11-26 02:49:00 · 284 阅读 · 0 评论