第7章 在C/C++中使用汇编 罗文坚 中国科大 计算机学院 http://staff.ustc.edu.cn/~wjluo/mcps/

Slides:



Advertisements
Similar presentations
陳旺全醫師主講 健康養生茶飲 明目菊花茶 明目菊花茶 成分:菊花五錢、 500c.c 熱水沖泡 成分:菊花五錢、 500c.c 熱水沖泡 功效:可治療急慢性結膜炎、頭暈 功效:可治療急慢性結膜炎、頭暈 頭痛、口苦、口乾、高血壓 頭痛、口苦、口乾、高血壓.
Advertisements

六大類食物 五穀根莖類 六大類食物 油脂類 蛋魚肉豆類 奶類 蔬菜類 水果類. 五穀根莖類 : 提供熱量 : 部份蛋白質,維生素,礦物質,及膳食纖維 包含麵 ( 及麵包饅頭 ) ,飯類,蕃薯等食物 也就是一般所稱的 " 主食 " ( 蘿蔔不是這一類,是屬於蔬菜類喔! ) 飲食建議吃三到六碗 並推薦攝取全穀類食品.
正確睡午睡精神更好 正確睡午睡 精神更好 可降血壓 增加思考能力 懶懶的冬天加 上星期一又是假日後上班,如果能夠在 中午補個眠,稍微休息一下,對於精神 的提振及下午工作效率都有幫助。但冬 天睡午覺要注意保暖以及水分的補充, 避免受涼或是血液循環不好,造成手或 腿麻痛,注意這些小地方可以讓睡午睡 更健康!
揮別電腦族疲勞症候群 主講人 : 陳潮宗 中醫師. 常有症狀一 起因&症狀: 起因&症狀: 坐姿不正最易引起腰酸背痛、 過度看螢幕則眼睛疲勞酸痛。 治療重點: 治療重點:補固腰腎、明目保睛。
引言 高血壓自我健康管理包含飲食、 運動、 及健康生活型態三大方向。 飲食 是改善高血壓的重要部分, 並提 供飲食方式來改善高血壓。
人事室專題計畫業務報告 人事室 謝明峯 轉 一、專任助理注意事項 計畫案如有聘任專任助理者, 請依據「南 華大學專案助理報到程序單」內容, 將資 料繳交至人事室 ( 請於聘任到職日前繳交, 以免影響到本身權利 ) 。 離職儲金或勞工退休金 依勞工退休金條例相關規定,
山伯與英台在健康書院修業完 成後,一行人逗陣開開心心的 回自己的家鄉 …… 於是開啟了另一段 ~ 新梁祝的故事 ~ 在下 梁山伯 小女子 祝英台 我是 阿成 我是 阿香.
糖尿病的饮食控制 厦门长庚医院张翼翔. 糖尿病 糖尿病的发病率逐年增高 糖尿病的发病率逐年增高 糖尿病对健康和生命的危害 糖尿病对健康和生命的危害 心、脑、肾、神经等 心、脑、肾、神经等 糖尿病的表现和诊断 糖尿病的表现和诊断 糖尿病的治疗 — 终身治疗 糖尿病的治疗 — 终身治疗.
第八章 膳食與營養 第一節 均衡營養與膳食 年 7 月公布新版「每日飲食指南」, 依食物營養特性,分為六大類: 全榖根莖類 蔬菜類水果類 低脂乳品類 油脂與堅果種子類 豆魚肉蛋類 食全十美.
高職生的早餐飲食習慣之研究 以市立士林高商為例 二年九班 李婷葦 二年九班 卓佳惠 二年九班 郭胤彣 關鍵字:早餐. 飲食習慣. 士林高商.
《高等学校创新能力提升计划》 的情况介绍 2012年3月.
說明完後將會有一個小測驗歐! 要認真聽歐!
口腔衛生保健 主講者:興中國小 護理師:莊靜華.
花孃心語.
芳香小物.
健康飲食觀 主講人:蘇麗棗.
第二章 项目一:企业厂区与车间平面设计 1.
第8章 机床操作 主讲:臧红彬 博士.
2012年投入产出调查 录入程序使用说明 卫生和行政事业 北京市投入产出办公室 2013年3月.
【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣2.5版授權釋出】
改革开放以来小金华的 变化 浙江中西部中心城市——金华市区全景.
【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣2.5版授權釋出】
一年三班 我 愛 早 讀 102/11/11.
西餐烹調 香蒜白酒海瓜子麵 焦糖布丁.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
第二讲 搭建Java Web开发环境 主讲人:孙娜
第4章 8086汇编语言程序设计 几个概念 8086汇编语言的语句 8086汇编中的伪指令 8086汇编中的运算符 汇编语言程序设计
SVN服务器的搭建(Windows) 柳峰
管理信息结构SMI.
走进编程 程序的顺序结构(二).
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第二章 Java语言基础.
逆向工程-汇编语言
本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣2.5版授權釋出
第 5 單元:法規的種類與位階關係(二) 1 【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣3.0版授權釋出】
本課程指定教材為:朱熹,《周易本義》,大安出版社。本講義僅引用部分內容,請讀者自行準備。
第4章 PHP流程控制语句.
作業系統 第三章 作業系統結構.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言程序设计 主讲教师:陆幼利.
VB与Access数据库的连接.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第4章 Excel电子表格制作软件 4.4 函数(一).
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
第九节 赋值运算符和赋值表达式.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
College of Computer Science & Technology
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
淡江大學 公文管理系統 教育訓練 叡揚資訊.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 通用寄存器 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
网校温州中学 关于显性基因与隐性基因 ——
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
数据表示 第 2 讲.
本課程指定教材為:朱熹,《周易本義》,大安出版社。本講義僅引用部分內容,請讀者自行準備。
WEB程序设计技术 数据库操作.
24 or 1024? PWN Jawbone Up24 手环.
黴飛色舞 組別:應用科學 組員:李悅慈、戴敬芳、楊佳琳 指導老師 :盧惠鶴老師 繳交報告日期:93/8/27 研究日期:93年8月9日.
作業系統的操作 2019/8/9 明誠中學編製.
臺灣當代小說與電影 授課教師:宋千儀 老師 【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣2.5版授權釋出】
Presentation transcript:

第7章 在C/C++中使用汇编 罗文坚 中国科大 计算机学院 http://staff.ustc.edu.cn/~wjluo/mcps/

本章内容 16位DOS应用程序中使用汇编语言与C/C++语言 32位应用程序中使用汇编语言与Visual C/C++语言

本章内容 16位DOS应用程序中使用汇编语言与C/C++语言 32位应用程序中使用汇编语言与Visual C/C++语言

Visual C++内嵌汇编的格式 两种方式: 所有汇编代码都放在__asm块中。 每条指令前加__asm。 __asm { statement-1 statement-2 …… statement-n } __asm statement-1 __asm statement-2 …… __asm statement-n

Visual C++内嵌汇编的格式 注释的风格: 注释可以放在汇编语言块中任何语句的后面。 使用汇编语言格式的注释或C/C++格式的注释都是可以的。 Visual C++建议尽量避免使用汇编风格的注释,因为汇编风格的注释有可能与C宏相冲突。 例: mov esi, buf ;初始化esi寄存器 Mov esi, buf //初始化esi寄存器 Mov esi, buf /*初始化esi寄存器*/

Visual C++内嵌汇编的基本规则 内嵌汇编代码可以做: 使用CPU指令集中的指令。 使用寄存器操作数。 通过名字引用函数参数。 可以引用在汇编语句块外面声明的代码标号和变量。 使用汇编风格或C风格的数值表示法。例,0A26H或0xA26等价。 在语句中使用PTR操作符。例,inc BYTE PTR[esi]。 使用EVEN和ALIGN伪指令。 EVEN伪指令使下一个变量或指令开始于偶数字节地址。

Visual C++内嵌汇编的基本规则 编写内嵌汇编代码时不能使用的特性: 使用数据定义伪指令,如DB、DW。 使用汇编语言表达式的运算符(PTR、 LENGTH、SIZE和TYPE除外)。 使用宏指令,包括MACRO、ENDM等。 引用段名(但可以用段寄存器作为操作数)。

Visual C++内嵌汇编的基本规则 寄存器的值: 在汇编语句块的开始处,不能对寄存器的值做任何假设,因为汇编语句块前面执行的语句可能已经对寄存器进行了修改。 Microsoft Visual C++的关键字__fastcall导致编译器使用寄存器来传递参数。为了避免寄存器冲突,不要一起使用__fastcall和__asm。 长度、类型和大小 在内嵌汇编中可使用LENGTH、SIZE和TYPE操作符。

32位应用程序中使用汇编语言与Visual C/C++语言 使用控制台I/O访问键盘和显示器 直接访问I/O端口 开发Windows的Visual C++应用程序

使用控制台I/O访问键盘和显示器 例,以二进制到十六进制之间的任意进制显示1~100之间的数字。

使用控制台I/O访问键盘和显示器 例,以二进制到十六进制之间的任意进制显示1~100之间的数字。

使用控制台I/O访问键盘和显示器 例,以二进制到十六进制之间的任意进制显示1~100之间的数字。

使用控制台I/O访问键盘和显示器 例,以二进制到十六进制之间的任意进制显示1~100之间的数字。

使用控制台I/O访问键盘和显示器 例,以二进制到十六进制之间的任意进制显示1~100之间的数字。

直接访问I/O端口 如果要读写I/O端口,可以使用控制台I/O命令。 例,_inp(port),_outp(port, byte_data)。 如果使用Window XP、Windows Vista这样的Windows环境,I/O端口是不能直接访问的。 这些系统下访问I/O端口的唯一办法是开发内核驱动。

本章内容 16位DOS应用程序中使用汇编语言与C/C++语言 32位应用程序中使用汇编语言与Visual C/C++语言

汇编和C++混合目标码 用Visual C++链接汇编语言 在C/C++中添加新的汇编语言指令

用Visual C++链接汇编语言 汇编模块

用Visual C++链接汇编语言 C++模块

本章小结 内嵌汇编 了解基本格式和要求 混合编程 了解编程格式和链接过程

作业 (补充题7.1)编写一个短的可由C++使用的汇编语言模块,该程序将一个数字变为其绝对值。程序名为Abs,假定数字是一个32位有符号整数。