安防监控知识
电气知识|变量和标号的属性
2017-01-13  浏览:47
安防之家讯:1. 标号由一组放在语句前头的标识符后跟一个 " : " 来定义,用以指定相应程序段在内存的首地址位置。

任何一个标号一经定义就具有 3 种属性:

标号的段地址;

标号的偏移地址;

标号的类型; 1 ) NEAR-- 该标号只能在段内转移; 2 ) FAR-- 在段间使用;

标号和名字一经定义便具有以下两类三种属性:

① 段值

标号和名字对应存储单元的段地址

② 偏移值

标号和名字对应存储单元的偏移地址

③ 类型

标号、子程序名的类型可以是 NEAR (近)和 FAR (远),分别表示段内或段间



2 . 变量的属性:

变量一经定义,通常具有 5 种属性(即特征):

1 ) 变量的段地址( SEG ); 2 ) 变量的偏移地址( OFFSET );

3 ) 变量类型( TYPE ):所定义变量所占字节数;由 DB 、 DW 、 DD 、 DQ 、 DT 伪指令定义的变量类型分别为 1 , 2 , 4 , 8 , 10 。前 3 种类型又分别称为 BYTE 类、 WORD 类、 DWORD 类。

4 ) 变量长度( LENGTH ):所定义变量的个数;

5 ) 变量大小( SIZE ):定义中分配给同一变量名所有变量的总字节数;

变量定义实质上是对数据区内存的一种安排,这种安排对汇编语言编程是非常重要的,它是在汇编过程中完成的。编写程序时,直接引用变量的名字,而汇编过程中,对任何变量的引用,都自动转换为变量相应的偏移地址。

变量名的类型可以是 BYTE (字节)、 WORD (字)和 DWORD (双字)等

地址操作符

取得名字或标号的段地址和偏移地址两个属性

[ ] 将括起的表达式作为存储器地址

$ 当前偏移地址

: 采用指定的段地址寄存器

OFFSET 名字 / 标号

返回名字或标号的偏移地址

SEG 名字 / 标号



返回名字或标号的段地址

org $+10

array db 45,45h

.code

mov ax,seg array

mov ds,ax

mov bx,offset array

; 等价于 lea bx,array

mov cl,array+4

; 等效于 mov cl,array[4]

mov ax,es:[2000h]

mov al,byte ptr w_var ;w_var 是一个字变量

jmp far ptr n_label ;n_label 是一个标号

使用 PTR 操作符,可以临时改变名字或标号的类型

THIS 类型名

利用 THIS 说明的操作数具有汇编时的当前逻辑地址,但具有指定的类型

b_var equ THIS byte

; 按字节访问变量 b_var ,但与 w_var 的地址相同

w_var dw 10 dup(0) ; 按字访问变量 w_var

f_jump equ THIS far

; 用 f_jump 为段间转移( f_jump label far )

n_jump: mov ax,w_var

; 用 n_jump 为段内近转移,但两者指向同一条指令

LABEL 伪指令的功能等同于“ EQU THIS ”

SHORT 标名

指定标号作为 -128 ~ +127 字节范围内的短转移

jmp short n_jump

当然,如果标号实际上超出了这个范围,则出错。

TYPE 名字 / 标名

返回表明名字或标号类型的一个字量数值

对字节、字和双字变量依次返回 1 、 2 和 4 ;

对短、近和远转移依次返回 ff01h 、 ff02h 和 ff05h

mov ax,TYPE w_var ; 汇编结果为 mov ax,2

mov ax,TYPE n_jump

; 汇编结果为 mov ax,0ff02h ( near 标号)

操作符 SIZEOF 返回整个变量占用的字节数

LENGTHOF 返回整个变量的数据项数(即元素数)

SIZEOF = LENGTHOF × TYPE

.model small

.stack

.data

v_byte equ this byte

;v_byte 是字节类型,与变量 v_word 的地址相同

v_word dw 3332h,3735h

;v_word 是字类型的变量

target dw 5 dup(20h)

; 分配数据空间 2 × 5 = 10 字节

crlf db 0dh,0ah,'$'

flag db 0

n_point dw offset s_label

; 取得标号 s_label 的偏移地址

例:属性及其应用

.code

.startup

mov al,byte ptr v_word

; 用 PTR 改变 v_word 的类型,否则类型不匹配

dec al

mov v_byte,al

; 对 v_word 的头一个字节操作,原为 32H 、现为 31H

n_label: cmp flag,1

jz s_label ;flag 单元为 1 转移

inc flag

jmp short n_label ; 进行短转移

s_label: cmp flag,2

jz next ;flag 单元为 2 转移

inc flag

jmp n_point

; 段内的存储器间接寻址,转移到 s_label 标号处

next: mov ax,type v_word

; 汇编结果为 mov ax,2

mov cx,lengthof target

; 汇编结果为 mov cx,5

mov si,offset target

w_again: mov [si],ax ; 对字单元操作

inc si ;SI 指针加 2

inc si

loop w_again ; 循环

mov cx,sizeof target

; 汇编结果为 mov cx,0ah

mov al,'?'

mov di,offset target

b_again: mov [di],al ; 对字节单元操作

inc di ;DI 指针加 1

loop b_again ; 循环

mov dx,offset v_word

; 显示结果: 1357??????????

mov ah,9

int 21h

.exit 0

End安防之家专注于各种家居的安防,监控,防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/
更多»您可能感兴趣的文章:
更多»有关 安防监控 的产品:
低价出售发动机故障诊断仪

低价出售发动机故障诊断仪

价格:到店咨询

碳平衡油耗仪厂家直销

碳平衡油耗仪厂家直销

价格:到店咨询

供应逆反射标志测试仪质量好

供应逆反射标志测试仪质量好

价格:到店咨询

浙江砂尘试验机品牌厂家→林频仪器

浙江砂尘试验机品牌厂家→林频仪器

价格:66.00/台

紫外线老化试验箱雅士林官方网站

紫外线老化试验箱雅士林官方网站

价格:到店咨询

北京高低温试验箱厂_性价比最好的是谁

北京高低温试验箱厂_性价比最好的是谁

价格:到店咨询

易博仕铝方通吊顶木纹铝方通厂家直销

易博仕铝方通吊顶木纹铝方通厂家直销

价格:7.50/米

易博仕勾搭式垂帘铝挂片吊顶天花

易博仕勾搭式垂帘铝挂片吊顶天花

价格:8.50/米

供应易博仕氟碳铝单板幕墙铝单板厂家直销

供应易博仕氟碳铝单板幕墙铝单板厂家直销

价格:198.00/平方米

供应易博仕氟碳铝单板幕墙铝单板厂家直销

供应易博仕氟碳铝单板幕墙铝单板厂家直销

价格:198.00/平方米

易博仕铝天花吊顶明架跌级铝扣板600*600厂家直销

易博仕铝天花吊顶明架跌级铝扣板600*600厂家直销

价格:38.00/平方米

供应易博仕c型铝条扣 防风铝条扣天花厂家直销

供应易博仕c型铝条扣 防风铝条扣天花厂家直销

价格:38.00/平方米

  • 安防监控资讯
  • 发表评论 | 0评
  • 评论登陆
  • (c)2015-2017 Bybc.cn SYSTEM All Rights Reserved