【汇编语言与计算机系统结构笔记13】简单的上机过程示例
本次笔记内容:
16.上机过程-1(第16分钟开始)
17.上级过程-2
注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库。因此,为了节省时间,我只记录老师上课强调的内容与对应ppt页码。
本节课对应幻灯片:汇编语言程序设计-程序格式,第38页起。
文章目录
- P39 汇编语言程序的上机过程
- P39 上机步骤
- P43起 举了一个 match.asm 的例子
- P50起 举了一个附加段定义 match1.asm
- P52起 举了一个简化段定义 match2.asm
- P54 展示 .model tiny 的微模式的例子
- P56 DOS 功能调用
- P57 DOS 键盘功能调用
- P59 DOS 显示功能调用 / 打印功能
- 补充:关于汇编中的数组等
“下面咱们简单说说汇编程序上机过程。”
P39 汇编语言程序的上机过程
用 MASM 6.11 和 CodeView 汇编和调试汇编语言程序:
- 在 MASM 6.11 中,Microsoft 公司提供了程序员工作平台 PWB(programmer’s work bench),这是一个集成化开发环境,程序员可以方便地完成汇编语言源程序的编辑、汇编、连接调试和执行等工作。
- MASM 6 提供的调试工具是 CodeView,CodeView 是一个源码级调试工具,能支持 16 位和 32 位指令的调试。其用户界面是多窗口全屏幕的,用户可方便地使用菜单和鼠标来调试程序。
P39 上机步骤
- 设置环境变量:在 MASM611\BINR 的目录下,执行 new-vars.bat 即可建立环境参数和搜索路径,然后执行 pwb.exe 即可进入 PWB 的主窗口。用其文件 File 菜单中的 Exit 命令可退出 PWB。
- 用 File 菜单下的有关命令建立 asm 文件。
- 用 Project 和 Options 菜单下的某些命令建立汇编语言程序运行环境建立工程文件,设置所建立的可执行文件类型的 Build Options,设置编译器选项的 Language Options,设置连接器选项的 Link Options,设置调试器选项的 CodeView Options 等。由于用户使用时大部分选项都可采用 PWB 提供的默认值,因而不必作任何修改。但对于汇编语言程序,还有必要对 MASM的选项作出某些选择。
- 用 Project 菜单下的有关命令对源文件进行汇编和连接(
Compile File
编译(汇编)当前的源文件,生成目标文件;Build
连接目标文件,生成可执行文件;Build All
汇编当前源文件,连接工程中的所有目标文件,生成可执行文件)。 - 用 Run 菜单下的有关命令执行程序;
- 用 CodeView 调试程序。
调试窗口如图。
P43起 举了一个 match.asm 的例子
- 首先是堆栈的展示:44到47;
- 接着是列表文件
.lst
的讲解:47到39。
P50起 举了一个附加段定义 match1.asm
内存中,数据占了两个小段。
P52起 举了一个简化段定义 match2.asm
其中,代码段在编译后来到了是数据段前。
P54 展示 .model tiny 的微模式的例子
在 tiny 下,偏移地址必须是 100H ;如org 100H
。上来就无条件跳转。
例子中代码跟数据相互参杂。
P56 DOS 功能调用
INT 21H
用户在程序中调用 DOS 提供的一些子功能:
- 一般设备的输入输出
- 磁盘的输入输出及磁盘文件的管理
- 其它
调用方法:
- 设置调用参数
- MOV AH , 功能号
- INT 21H
P57 DOS 键盘功能调用
例:单字符输入(AH=1)
get-key: mov ah , 1int 21hcmp al , 'Y'je yescmp al , 'N'je nojne get_key
yes:......
no:......
例如,输入字符串(AH=0ah
)
从键盘接收字符串,首先应该定义缓冲区:
P59 DOS 显示功能调用 / 打印功能
- 显示单个字符
AH=2
- 显示字符串
AH=9
- DOS 打印功能
AH=5
补充:关于汇编中的数组等
关于课程上级课程-2。
高级语言中有的内容(数组、指针等),汇编语言中是否存在?老师做了一些补充:
- 关于数组,是存在的;
- 指针也是可以定义的。
这部分没有板书、ppt,且未出现在教学计划中。老师做了些上机展示。具体可以见教材,这部分我第一次学习暂时不考虑。
【汇编语言与计算机系统结构笔记13】简单的上机过程示例相关推荐
- 【汇编语言与计算机系统结构笔记01】x86/MIPS/ARM指令集概述与特性,一篇HPCA引发的思考(商业生态的决定性作用)
资源Bilibili AV46914471 + AV57921488 汇编语言与计算机系统结构 清华大学 张悠慧 本次笔记内容: 01.汇编语言与计算机系统结构 02.汇编基础知识--指令集综述 文章 ...
- 【汇编语言与计算机系统结构笔记12】序格式与伪操作:简化段的定义、操作符等
本次笔记内容: 15.程序格式与伪操作-2 16.上机过程-1(前15分钟) 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录老师上课强调的内容与对应ppt ...
- 【汇编语言与计算机系统结构笔记17】MIPS 汇编初步
本次笔记内容: 25.MIPS汇编初步-1 26.MIPS汇编初步-2 27.MIPS指令集与汇编程序设计 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录 ...
- 【汇编语言与计算机系统结构笔记10】C语言数组的汇编访问:连续存储、代码优化、无边界检查;结构对齐要求 #简洁笔记形式
本次笔记内容: 13.数据的机器表示 注:本次笔记开始,我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录老师上课强调的内容与对应ppt页码. 本节课对应幻灯片: ...
- 【汇编语言与计算机系统结构笔记05】汇编的系统结构,从C代码生产汇编代码,一个具体的、经典的数据传送指令(mov)实例与分析
本次笔记内容: 06.寻址模式与数据传输指令等 文章目录 汇编程序员眼中的系统结构 如何从C代码生产汇编代码 如何装gcc? 汇编语言数据格式 第一条汇编指令实例 数据传送指令(mov) 语法与操作数 ...
- 【汇编语言与计算机系统结构笔记20】补充内容:可定制处理器指令集
本次笔记内容: 31.补充内容--可定制处理器指令集-1 32.补充内容--可定制处理器指令集-2 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库. 本节课对应幻灯片:汇编语言程序设计 ...
- 【汇编语言与计算机系统结构笔记18】MIPS指令集与汇编程序设计 异常处理
本次笔记内容: 28.MIPS指令集与汇编程序设计-2 补充:MIPS32异常处理 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库. 本节课对应幻灯片:汇编语言程式设计-MIPS.pd ...
- 【汇编语言与计算机系统结构笔记16】子程序设计:子程序的嵌套与递归,多个模块之间的参数传送
本次笔记内容: 23.子程序设计-2-1 24.子程序设计-2-2 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录老师上课强调的内容与对应ppt页码. 本 ...
- 【汇编语言与计算机系统结构笔记15】子程序设计:调用与返回,保护与恢复寄存器,子程序的参数传递,堆栈平衡,结构伪操作 STRUC
本次笔记内容: 20.子程序设计-1-1 21.子程序设计-1-2 22.子程序设计-1-3 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录老师上课强调的 ...
最新文章
- UWP开发随笔——使用SQLite数据库
- pmp知识点详解-项目大牛整理_PMP核心知识点—第五章:项目范围管理(1)
- 改变Eclipse主题颜色
- Aspx页面中直接编写javascript脚本
- linux检测hashicorp,在Ubuntu/CentOS/Debian上安装和配置Hashicorp Vault服务器的方法
- springboot 系列教程十:springboot单元测试
- 学习机器学习的项目_辅助项目在机器学习中的重要性
- python总线 rabbitmq_python - 操作RabbitMQ
- ES6学习笔记(四):教你轻松搞懂ES6的新增语法
- 图文分析:如何利用Google的protobuf,来思考、设计、实现自己的RPC框架
- POJ 3666 Making the Grade (DP滚动数组)
- swf文件的反编译入门
- 今天第72个儿童节,程序猿“童”样精彩~
- 诺顿防毒软件曝漏洞 任意下载运行恶意代码(转)
- mac 重启后提示 路径/System/installation/Packages/OSinstall.mpkg 似乎已缺失或已损坏,的解决方法
- 2022年上半年网络工程师上午真题及答案
- SAP工厂日历的应用
- 【Multisim仿真】全波整流电路仿真
- ubuntu实现定时重启
- pythonrandint用法_Python randint()用法及代码示例
热门文章
- 攻防比赛_深度:一场攻防杂乱的比赛,凸显了索肖三中卫阵型的核心是谁
- 【Flume】举例分析如何配置Flume
- 【Oracle】ORA-55610: Invalid DDL statement on history-tracked table
- 执行cmd命令时:因为在此系统上禁止运行脚本的解决方法
- 另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]
- 解决ajax无法给js全局变量赋值的问题
- teamviewer解除5分钟商业限制最新方法,永久解决商业限制问题,无需一直改MAC地址
- python访问带密码的共享文件夹_设置带密码和读写权限的共享文件夹 - Hakka
- win11没有uefi如何安装 windows11跳过uefi模式的安装方法
- activiti处理当前用户的任务