版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、与与 (Assembly Language a=1; b=2; c=a+b; printf(“c=%dn,c); return 0; 编译后的目标文编译后的目标文 件达到件达到3.59KB data segment a db ? b db ? c db ? string db c=$ data ends code segment main proc far assume cs:code, ds:data, es:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax mov es,ax mov a,1 mov b,2 mov al
2、,a add al,b mov c,al lea dx,string mov ah,09 int 21h add c,30h mov dl,c mov ah,2 int 21h mov dl,0ah int 21h mov dl,0dh int 21h ret main endp code ends end start 例例. . C = a + b 汇编后的目汇编后的目 标文件只有标文件只有 208208字节字节 系统程序、效率代码、系统程序、效率代码、I/OI/O驱动程序驱动程序 70%70%以上的系统软件是用汇编语言编写的。以上的系统软件是用汇编语言编写的。 某些快速处理、位处理、访问硬
3、件设备等某些快速处理、位处理、访问硬件设备等 高效程序是用汇编语言编写的。高效程序是用汇编语言编写的。 高级绘图程序、视频游戏程序一般是用汇高级绘图程序、视频游戏程序一般是用汇 编语言编写的编语言编写的。 n 字符的表示字符的表示 ASCII码码:用一个字节字节来表示一个字符,低7位为字符的ASCII值, 最高位一般用作校验位。 标准的标准的ASCII码共码共128个字符,分为可打印个字符,分为可打印ASCII码和非码和非 打印打印ASCII码。码。 可打印可打印ASCII码:共码:共95个。例如:个。例如: 数字数字09:30H39H 字母字母AZ:41H5AH 字母字母az:61H7AH
4、空格:空格:20H 非打印非打印ASCII码:用于控制性代码,共码:用于控制性代码,共33个。例如个。例如 回车回车CR:0DH, 换行换行LF:0AH,响铃,响铃BEL:07H nASCII字符编码表字符编码表 80 x86计算机组织计算机组织 计算机系统计算机系统 存储器存储器 中央处理机中央处理机 外部设备外部设备 1. 计算机系统计算机系统 硬件:硬件: 中央处理机中央处理机 CPU 总线控制 逻辑 接 口 接 口 存储器存储器 大容量 存储器 I/O设备 I/O子系统子系统 系统总线系统总线 . . . . . . 软件:软件:系统软件 用户软件 存储器的逻辑地址与物理地址存储器的逻
5、辑地址与物理地址 10011111 00100110 01001000 逻辑地址逻辑地址 段地址段地址 : 偏移地址偏移地址 1000 : 0000H 1000 : 0001H 1000 : 0002H 1000 : 0003H 1000 : 0004H 1000 : 0005H 物理地址物理地址 10000H 10001H 10002H 10003H 10004H 10005H 10000011 01011100 10100010 字节内容(10000H)9FH;(10001H)26H 字内容 (10000H)269FH;(10001H)4826H 访问两次内存 3. 中央处理器中央处理器
6、8086/8088寄存器组:寄存器组: 数据寄存器数据寄存器: 指针及变址寄存器指针及变址寄存器:SP、BP、SI、DI 段寄存器段寄存器: CS、DS、SS、ES 控制寄存器控制寄存器: IP、FLAGS CPU组成:算术逻辑部件ALU、 控制器、寄存器 AX BX CX DX AH AL BH BL CH CL DH DL 高8位 低8位 标志寄存器标志寄存器 ( FLAGS / PSW ) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 条件码标志: 控制标志: OF 溢出标志 DF 方向标志 SF 符号标志 IF 中断标志 ZF 零标志 TF 陷阱标志 CF
7、 进位标志 AF 辅助进位标志 PF 奇偶标志 OF DF IF TF SF ZF AF PF CF 例:ADD AX, BX JO / JC ERROR ? OF(ov/nv):Over 溢出 标志位 DF(dn/up):Direction 方向 标志位 IF(ei/di):Enable 允许中断 标志位 SF(ng/pl):Symbol 符号 标志位 ZF(zr/nz):Zero 零 标志位 AF(ac/na):Auxiliary 辅助进位 标志位 PF(pe/po):Parity 奇偶 标志位 CF(cy/nc):Carry 进位 标志位 溢出 OV(溢出) NV(未溢出) 零位 ZF(
8、等于零) NZ(不等于零) 方向 DN(减少) UP(增加) 辅助进位 AC(进位) NA(无进位) 中断 EI(许可) DI(禁止) 奇偶标志 PE(偶) PO(奇) 符号 NG(负) PL(正) 进位 CY(进位) NC(无进位) 寄存器与存储器的比较:寄存器与存储器的比较: 寄寄 存存 器器 存存 储储 器器 在在CPU内部内部 在在CPU外部外部 访问速度快访问速度快 访问速度慢访问速度慢 容量小,成本高容量小,成本高 容量大,成本低容量大,成本低 用名字表示用名字表示 用地址表示用地址表示 没有地址没有地址 地址可用各种方式形成地址可用各种方式形成 指令系统指令系统 一组指令的集合一
9、组指令的集合 80 x86的指令系统和寻址方式的指令系统和寻址方式 操作码操作码 操作数操作数 . 操作数操作数指令指令 寻址方式寻址方式 与数据有关的寻址方式与数据有关的寻址方式 与转移地址有关的寻址方式与转移地址有关的寻址方式 1. 8086的寻址方式的寻址方式 与数据有关的寻址方式与数据有关的寻址方式:以以 MOV 指令为例指令为例 立即寻址立即寻址 MOV AX , 3069H 寄存器寻址寄存器寻址 MOV AL , BH 直接寻址直接寻址 MOV AX , 2000H 寄存器间接寻址寄存器间接寻址 MOV AX , BX 寄存器相对寻址寄存器相对寻址 MOV AX , COUNT S
10、I 基址变址寻址基址变址寻址 MOV AX , BP DI 相对基址变址寻址相对基址变址寻址 MOV AX , MASK BX SI 存储器寻址存储器寻址 数据传送指令数据传送指令 算术指令算术指令 逻辑指令逻辑指令 串处理指令串处理指令 控制转移指令控制转移指令 处理机控制与杂项操作指令处理机控制与杂项操作指令 2. 8086的指令系统的指令系统 传送指令:传送指令: MOV DST, SRC 执行操作:执行操作: (DST) (SRC) 注意注意: * DST、SRC 不能同时为段寄存器不能同时为段寄存器 MOV DS, ES * 立即数不能直接送段寄存器立即数不能直接送段寄存器 MOV
11、DS, 2000H * DST 不能是立即数和不能是立即数和CS * DST、SRC 不能同时为存储器寻址不能同时为存储器寻址 * 不影响标志位不影响标志位 通用数据传送指令通用数据传送指令 MOV AX, DSEG MOV DS, AX 算术指令:算术指令: 加法指令加法指令 ADD、ADC、INC 减法指令减法指令 SUB、SBB、DEC、NEG、CMP 乘法指令乘法指令 MUL、IMUL 除法指令除法指令 DIV、IDIV 十进制调整指令十进制调整指令 DAA、DAS、 AAA、AAS、AAM、AAD 加法指令加法指令 加法指令:加法指令: ADD DST, SRC 执行操作:执行操作:
12、 (DST) (SRC) + (DST) 带进位加法指令:带进位加法指令: ADC DST, SRC 执行操作:执行操作: (DST) (SRC) + (DST) + CF 加加1指令:指令: INC OPR 执行操作:执行操作: (OPR) (OPR) + 1 注意注意: * 除除INC指令指令不影响不影响CF标志外,均对条件标志位有影响。标志外,均对条件标志位有影响。 减法指令减法指令 减法指令:减法指令: SUB DST, SRC 执行操作:执行操作: (DST) (DST) - (SRC) 带借位减法指令:带借位减法指令: SBB DST, SRC 执行操作:执行操作: (DST) (
13、DST) - (SRC) - CF 减减1指令:指令: DEC OPR 执行操作:执行操作: (OPR) (OPR) - 1 求补指令:求补指令: NEG OPR 执行操作:执行操作: (OPR) - (OPR) 比较指令:比较指令: CMP OPR1, OPR2 执行操作:执行操作: (OPR1) - (OPR2) 注意注意: * 除除DEC指令指令不影响不影响 CF标志外,均对条标志外,均对条 件标志位有影响。件标志位有影响。 乘法指令乘法指令 无符号数乘法指令:无符号数乘法指令: MUL SRC 带符号数乘法指令:带符号数乘法指令: IMUL SRC 执行操作:执行操作: 字节操作数字节
14、操作数 (AX) (AL) * (SRC) 字操作数字操作数 (DX, AX) (AX) * (SRC) 注意注意: * AL (AX) 为隐含的乘数寄存器。为隐含的乘数寄存器。 * AX (DX,AX) 为隐含的乘积寄存器。为隐含的乘积寄存器。 * SRC不能为立即数。不能为立即数。 * 除除CF和和OF外,对条件标志位无定义外,对条件标志位无定义。 调试程序的使用 熟练使用调试程序是学习和掌握汇编语熟练使用调试程序是学习和掌握汇编语 言的关键!言的关键! 三个重点三个重点 了解了解DEBUG DEBUG中几个主要命令的熟练使用中几个主要命令的熟练使用 用用DEBUG写一个汇编程序写一个汇编
15、程序 DEBUG的定义 DEBUG是专门为汇编语言设计的调试工具 可以检查、修改存储单元和寄存器的内容 可以装入、存储及运行目标程序 也可用DEBUG汇编简单的汇编语言程序 但一般人们更多的是用它作为调试工具 DEBUGDEBUG是汇编语言程序员分析、跟踪、修改指是汇编语言程序员分析、跟踪、修改指 令程序的有效工具。令程序的有效工具。 Debug 基本命令 a (Assemble) 逐行汇编 a address c (Compare) 比较两内存块 c range address d (Dump) 内存16进制显示 d address或d range e (Enter) 修改内存字节 e ad
16、dress list f (fill) 预置一段内存 f range list g (Go) 执行程序 g =address address. Debug 基本命令 h (Hexadecimal)计算两个十六进制数的和与差h value value i (Input) 从指定端口地址输入i pataddress l (Load) 读盘 l address driver seetor m (Move) 内存块传送 m range address n (Name) 置文件名 n filespec filespec. o (Output) 从指定端口地址输出o portadress byte q (
17、Quit) 结束 q r (Register) 显示和修改寄存器 r register name s (Search) 查找字节串 s range list t (Trace) 跟踪执行 t =address value u (Unassemble) 反汇编 u address 或range w (Write) 存盘 w addressdriver sector secnum ? 联机帮助 ? DEBUG常用命令-D命令 显示存储单元的命令(Dump) 格式为:D address D address 或或 Drange Drange 例1: D 100 功能:查看偏移地址为100H处存储单元的
18、内容 例2: D 100 200 功能:查看偏移地址为100H200H处存储单元的内容 我们知道:物理地址是由我们知道:物理地址是由段地址段地址: :偏移地址偏移地址来决定的。来决定的。 这里没写段地址默认为这里没写段地址默认为DSDS。若要查看别的段需用段超越。若要查看别的段需用段超越 前缀前缀, ,如:如:D ES:100D ES:100 DEBUG常用命令-E命令 输入或修改存储单元命令(edit) 用给定的内容列表来替代指定范围的存储 单元内容,格式:E 地址地址 内容列表内容列表 例1:-E DS:100 F3XYZ8D ;用五个字节替代存储单元DS:0100到0104的原内容 逐个
19、单元相继修改的方法,格式:E 地址 例2:-E CS:100 ;回车后可键入新的内容 DEBUG常用命令-R命令 检查修改寄存器的命令-R(register) 显示CPU内所有寄存器内容及标志位状态 格式: R 显示和修改某个寄存器内容 格式:R 寄存器名 例:R CX 显示和修改标志位状态 格式:R F DEBUG常用命令-A命令 汇编命令A(assemble) 格式:A address 在指定地址处开始编写汇编程序 该命令允许键入汇编语言语句,并能把它们 汇编成机器代码,相继地存放在从指定地址 开始的存储区中。 必须注意:DEBUG把键入的数字均看成十六 进制数,所以如要键入十进制数,则其
20、后应 加以说明,如100D。 A A命令举例命令举例: : - -A A 127C:0100 127C:0100 mov dx,010Bmov dx,010B 127C:0103 127C:0103 mov ah,09 mov ah,09 127C:0105 127C:0105 int 21 int 21 127C:0107 127C:0107 mov ah,4cmov ah,4c 127C:0109 127C:0109 int 21int 21 127C:010B 127C:010B db THIS IS AN db THIS IS AN EXAMPLE,$ EXAMPLE,$ 127C:0
21、11E 127C:011E - -r cx r cx CX 0000 CX 0000 : :011E 011E - -n n - -w w Writing 0011E bytes Writing 0011E bytes - -q q DEBUG常用命令-G命令 运行命令G(go) 格式:G=地址1地址2地址3 其中,地址1指定了运行的起始地址 如不指定则从当前的CS:IP开始运行。 后面的地址均为断点地址 当指令执行到断点时,就停止执行并显示当 前所有寄存器及标志位的内容,和下一条将 要执行的指令。 DEBUG常用命令-T命令 跟踪命令T(Trace) 逐条指令跟踪 格式:T=地址 从指定地址
22、起执行一条指令后停下来,显示所有寄存 器内容及标志位的值。 如未指定则从当前的CS:IP开始执行。 多条指令跟踪 格式:T=地址条数 从指定地址起执行n条指令后停下来,n由条数指定。 DEBUG常用命令-U命令 反汇编命令U(Unassemble) 从指定地址开始,反汇编32个字节 格式为: U 地址 例如: U 100 如果地址被省略则从上一个U命令的最后一条指 令的下一个单元开始显示32个字节。 对指定范围内的存储单元进行反汇编 格式为: U range 例如: U 100 10C 从偏移地址为100H处开始反汇编10CH个字节 DEBUG常用命令-Q命令 退出DEBUG程序的命令Q(qu
23、it) 退出DEBUG,返回到DOS 该命令无存盘功能,如需存盘应先使用W命 令 常用的DOS功能调用 汇编语言教材-专门讲述中断程序设计 这里我们需要用到几个常用的DOS功能调用, 所以这里先简单介绍几个 使用方法:使用方法: 1.1.设置入口参数设置入口参数( (有些不需要设置的就不设置有些不需要设置的就不设置) ) 2. 2.功能调用号送功能调用号送AHAH寄存器寄存器 3.3.发软中断指令发软中断指令“INT 21H”INT 21H” 4C号功能调用 功能:退回到DOS(操作系统)状态 入口参数:无 出口参数:无 该号功能调用等价于INT 20H中断 4C4C号功能调用举例号功能调用举
24、例 - -A A mov ah,4cmov ah,4c;退出;退出DEBUGDEBUG,回到,回到DOSDOS int 21 int 21 - -G G;执行程序命令;执行程序命令 该程序什么也不做,直接退回到该程序什么也不做,直接退回到DOSDOS状态。状态。 1号功能调用 功能:从键盘上读入一个字符,并将该 字符回显在屏幕上 入口参数:无 出口参数:AL=读到字符的ASCII码 说 明 : 如 果 读 到 的 字 符 是 c t r l + c 或 ctrl+break,则结束程序 1 1号功能调用举例号功能调用举例 -A -A mov ah,01 mov ah,01;调用;调用1 1号功
25、能,接受并回显字符号功能,接受并回显字符 int 21 int 21 mov ah,4c mov ah,4c;退出;退出DEBUGDEBUG,回到,回到DOSDOS int 21 int 21 -G -G;连续执行程序命令;连续执行程序命令 或者使用单步调试命令,来查看,用户输入的字符或者使用单步调试命令,来查看,用户输入的字符 是否存入是否存入ALAL寄存器中?寄存器中? -T-T;单步调试程序;单步调试程序 -G=100 104-G=100 104;只执行一部分指令;只执行一部分指令 2号功能调用 功能:向屏幕写一字符。 入口参数:DL=输出字符的ASCII码 出口参数:无 说明:在显示输
26、出时检查是否按ctrl+c或 ctrl+break键,如果是则结束程序 2 2号功能调用举例号功能调用举例 -A -A mov DL,31 mov DL,31;31=31=字符字符11的的ASCIIASCII码值码值 mov ah,02mov ah,02;调用;调用2 2号功能,显示号功能,显示DLDL中的字符中的字符 int 21int 21 mov ah,4c mov ah,4c;退出;退出DEBUGDEBUG,回到,回到DOSDOS int 21 int 21 -G -G;执行程序命令;执行程序命令 9号功能调用 功能:在屏幕上显示一个字符串。 入口参数:DS:DX=需要输出字符串的首地
27、址, 字符串以字符$为结束标志。 出口参数:无 说明:在显示输出时检查是否按ctrl+c或 ctrl+break键,如果是则结束程序 9 9号功能调用举例号功能调用举例 -A-A mov dx,10B mov dx,10B;dx=dx=字符串的首地址字符串的首地址 mov ah,09 mov ah,09 ;调用;调用9 9号显示字符串的功能号号显示字符串的功能号 int 21h int 21h mov ah,4c mov ah,4c ;退出;退出DEBUGDEBUG,回到,回到DOSDOS int 21 int 21 10B:10B:db hello,$ db hello,$ ;注意需要以;注意需要以$为结为结 束符束符 -G -G ;连续执行程序命令;连续执行程序命令 例题 要求: 用debug编写程序,输出指定的两行字符串 串1: THIS IS AN EXAMPLE,$ 串2: 123456789ABCDEF,$ 注意换行的操作。 例题原代码例题原代码 -A -A MOV DX,011C MOV DX,011C ;dx=dx=串串1 1的首地址的首地址 MOV AH,09 MOV AH,09 ;调用;调用9 9号功能显示串号功能显示串1 1 INT 21H INT 21H MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光大银行金融市场部总经理面试题库含答案
- 京东物流调度员面试技巧与答案
- 电商公司客服文员面试技巧与答案
- 电商物流经理面试常见问题及答案
- 程序员项目架构师面试题含答案
- 2025年智能城市建设项目可行性研究报告
- 2025年城市水资源综合利用项目可行性研究报告
- 2025年自动化仓储系统开发与运营项目可行性研究报告
- 2025年乡村振兴战略产业园区发展项目可行性研究报告
- 2025年园区智慧能源管理项目可行性研究报告
- 纪委谈话笔录模板经典
- 消防安全制度和操作规程
- 叉车安全技术交底
- 单人徒手心肺复苏操作评分表(医院考核标准版)
- 国家预算实验报告
- 工业园区综合能源智能管理平台建设方案合集
- 附件1:中国联通动环监控系统B接口技术规范(V3.0)
- 正弦函数、余弦函数的图象 说课课件
- 闭合性颅脑损伤病人护理查房
- 《你看起来好像很好吃》绘本课件
- 囊袋皱缩综合征课件
评论
0/150
提交评论