8089汇编 源程序
8089汇编 源程序
汇编程序:包含汇编指令和伪指令的文本。
汇编语言由汇编指令和伪指令构成,想要组合成源程序进行编译就需要这么做。
汇编指令
- 对应有机器码的指令,可以被编译为机器指令,最终被CPU执行
伪指令
- 没有对应的机器码的指令,最终不被CPU所执行。
- 指导编译器将汇编语言转换为机器码。
源程序说明
一、程序案例
assume cs:codesg codesg segment mov ax,0123H mov bx,0456H add ax,bx add ax,ax mov ax,4c00h int 21h codesg ends end
;注释:”;“分号 ;设置创建的段与寄存器关联 cs:code,ds:data,ss:stack assume cs:code,ds:data,ss:stack ;设置段 data data segment dw 0123H,0456H,0789H,0abcH,0defH ;结束段 data data ends ;设置段 stack stack segment dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;结束段 stack stack ends ;设置段 code code segment mov ax,stack mov ss,ax mov sp,20h ;设置栈段 mov ax,data mov ds,ax ;设置数据段 mov bx,0 mov cx,8 s: push [bx] add bx,2 loop s .... ;结束段 code code ends ;结束程序 end 源程序 说明
二、代码解析
1、含义
段定义
- 一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。
- 一个有意义的汇编程序中至少要有一个段,这个段用来存放代码。
- 定义程序中的段:每个段都需要有段名。
段名 segment ——段的开始 .... 段名 ends ——段的结束
end (不是ends)
- 汇编程序的结束标记。若程序结尾处不加end,编译器在编译程序时,无法知道程序在何处结束。
assume(假设)
- 含义是假设某一段寄存器和程序中的某一个用 segment … ends 定义的段相关联——assumecs:codesg指CS寄存器与codesg关联,将定义的codesg当作程序的代码段使用。
2、说明
3、源程序经编译连接后变为机器码
源程序设计
一、案例:编程求2的3次方
; ① 定义一个段 abc segment abc ends ; ② 实现处理任务 abc segment mov ax,2 add ax,ax add ax,ax abc ends ; ③ 指出程序在何结束 abc segment mov ax,2 add ax,ax add ax,ax abc ends end ; ④ 段与段寄存器关联 assume cs:abc abc segment mov ax,2 add ax,ax add ax,ax abc ends end ; ⑤ 加上程序返回的代码 assume cs:abc abc segment mov ax,2 add ax,ax add ax,ax mov ax,4c00h int 21h abc ends end
二、正规程序样式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?