本次笔记内容:
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 上机步骤

  1. 设置环境变量:在 MASM611\BINR 的目录下,执行 new-vars.bat 即可建立环境参数和搜索路径,然后执行 pwb.exe 即可进入 PWB 的主窗口。用其文件 File 菜单中的 Exit 命令可退出 PWB。
  2. 用 File 菜单下的有关命令建立 asm 文件。
  3. 用 Project 和 Options 菜单下的某些命令建立汇编语言程序运行环境建立工程文件,设置所建立的可执行文件类型的 Build Options,设置编译器选项的 Language Options,设置连接器选项的 Link Options,设置调试器选项的 CodeView Options 等。由于用户使用时大部分选项都可采用 PWB 提供的默认值,因而不必作任何修改。但对于汇编语言程序,还有必要对 MASM的选项作出某些选择。
  4. 用 Project 菜单下的有关命令对源文件进行汇编和连接(Compile File 编译(汇编)当前的源文件,生成目标文件;Build 连接目标文件,生成可执行文件;Build All 汇编当前源文件,连接工程中的所有目标文件,生成可执行文件)。
  5. 用 Run 菜单下的有关命令执行程序;
  6. 用 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】简单的上机过程示例相关推荐

  1. 【汇编语言与计算机系统结构笔记01】x86/MIPS/ARM指令集概述与特性,一篇HPCA引发的思考(商业生态的决定性作用)

    资源Bilibili AV46914471 + AV57921488 汇编语言与计算机系统结构 清华大学 张悠慧 本次笔记内容: 01.汇编语言与计算机系统结构 02.汇编基础知识--指令集综述 文章 ...

  2. 【汇编语言与计算机系统结构笔记12】序格式与伪操作:简化段的定义、操作符等

    本次笔记内容: 15.程序格式与伪操作-2 16.上机过程-1(前15分钟) 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录老师上课强调的内容与对应ppt ...

  3. 【汇编语言与计算机系统结构笔记17】MIPS 汇编初步

    本次笔记内容: 25.MIPS汇编初步-1 26.MIPS汇编初步-2 27.MIPS指令集与汇编程序设计 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录 ...

  4. 【汇编语言与计算机系统结构笔记10】C语言数组的汇编访问:连续存储、代码优化、无边界检查;结构对齐要求 #简洁笔记形式

    本次笔记内容: 13.数据的机器表示 注:本次笔记开始,我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录老师上课强调的内容与对应ppt页码. 本节课对应幻灯片: ...

  5. 【汇编语言与计算机系统结构笔记05】汇编的系统结构,从C代码生产汇编代码,一个具体的、经典的数据传送指令(mov)实例与分析

    本次笔记内容: 06.寻址模式与数据传输指令等 文章目录 汇编程序员眼中的系统结构 如何从C代码生产汇编代码 如何装gcc? 汇编语言数据格式 第一条汇编指令实例 数据传送指令(mov) 语法与操作数 ...

  6. 【汇编语言与计算机系统结构笔记20】补充内容:可定制处理器指令集

    本次笔记内容: 31.补充内容--可定制处理器指令集-1 32.补充内容--可定制处理器指令集-2 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库. 本节课对应幻灯片:汇编语言程序设计 ...

  7. 【汇编语言与计算机系统结构笔记18】MIPS指令集与汇编程序设计 异常处理

    本次笔记内容: 28.MIPS指令集与汇编程序设计-2 补充:MIPS32异常处理 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库. 本节课对应幻灯片:汇编语言程式设计-MIPS.pd ...

  8. 【汇编语言与计算机系统结构笔记16】子程序设计:子程序的嵌套与递归,多个模块之间的参数传送

    本次笔记内容: 23.子程序设计-2-1 24.子程序设计-2-2 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录老师上课强调的内容与对应ppt页码. 本 ...

  9. 【汇编语言与计算机系统结构笔记15】子程序设计:调用与返回,保护与恢复寄存器,子程序的参数传递,堆栈平衡,结构伪操作 STRUC

    本次笔记内容: 20.子程序设计-1-1 21.子程序设计-1-2 22.子程序设计-1-3 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录老师上课强调的 ...

最新文章

  1. UWP开发随笔——使用SQLite数据库
  2. pmp知识点详解-项目大牛整理_PMP核心知识点—第五章:项目范围管理(1)
  3. 改变Eclipse主题颜色
  4. Aspx页面中直接编写javascript脚本
  5. linux检测hashicorp,在Ubuntu/CentOS/Debian上安装和配置Hashicorp Vault服务器的方法
  6. springboot 系列教程十:springboot单元测试
  7. 学习机器学习的项目_辅助项目在机器学习中的重要性
  8. python总线 rabbitmq_python - 操作RabbitMQ
  9. ES6学习笔记(四):教你轻松搞懂ES6的新增语法
  10. 图文分析:如何利用Google的protobuf,来思考、设计、实现自己的RPC框架
  11. POJ 3666 Making the Grade (DP滚动数组)
  12. swf文件的反编译入门
  13. 今天第72个儿童节,程序猿“童”样精彩~
  14. 诺顿防毒软件曝漏洞 任意下载运行恶意代码(转)
  15. mac 重启后提示 路径/System/installation/Packages/OSinstall.mpkg 似乎已缺失或已损坏,的解决方法
  16. 2022年上半年网络工程师上午真题及答案
  17. SAP工厂日历的应用
  18. 【Multisim仿真】全波整流电路仿真
  19. ubuntu实现定时重启
  20. pythonrandint用法_Python randint()用法及代码示例

热门文章

  1. 攻防比赛_深度:一场攻防杂乱的比赛,凸显了索肖三中卫阵型的核心是谁
  2. 【Flume】举例分析如何配置Flume
  3. 【Oracle】ORA-55610: Invalid DDL statement on history-tracked table
  4. 执行cmd命令时:因为在此系统上禁止运行脚本的解决方法
  5. 另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]
  6. 解决ajax无法给js全局变量赋值的问题
  7. teamviewer解除5分钟商业限制最新方法,永久解决商业限制问题,无需一直改MAC地址
  8. python访问带密码的共享文件夹_设置带密码和读写权限的共享文件夹 - Hakka
  9. win11没有uefi如何安装 windows11跳过uefi模式的安装方法
  10. activiti处理当前用户的任务