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 

二、正规程序样式

 

posted @ 2020-03-12 11:58  kevin.Xiang  阅读(566)  评论(0编辑  收藏  举报