汇编语言 数据伪指令 DUP用法

2024-12-04 06:59:03
推荐回答(5个)
回答(1):

10 dup(1)重复定义了10个字元素,初始值为1,占用10*2=20个字节。

5 dup(?)重复定义了5个字元素(其初始值实际为0),占用5*2=10个字节

因此总共占用30个字节。

具体分析:在汇编定义变量的时候会用到dup,变量名 、类型 、初值表,Dup用于把一个相同值赋值若干次,重复次数 dup(数据项),具体比如s db 30 dup(0),定义一个字节型变量,该变量占用30个字节,所有字节被初始化成0,equ是一个代码替换指令。

扩展资料

优点

1、汇编语言作为机器语言之上的第二代编程语言,它也有很多优点:

2、可以轻松的读取存储器状态以及硬件I/O接口情况

3、编写的代码因为少了很多编译的环节,可以能够准确的被执行

4、作为一种低级语言,可扩展性很高

缺点

1、因为代码非常单调,特殊指令字符很少,所以造成了代码的冗长以及编写的困难

2、因为汇编仍然需要自己去调用存储器存储数据,很容易出现BUG,而且调试起来也不容易

3、就算完成了一个程序,后期维护时候也需要耗费大量的时间。

4、因为机器的特殊性造成了代码兼容性差的缺陷。

回答(2):

10 dup(1)重复定义了10个字元素,初始值为1,占用10*2=20个字节。

5 dup(?)重复定义了5个字元素(其初始值实际为0),占用5*2=10个字节

因此总共占用30个字节。

具体分析:在汇编定义变量的时候会用到dup,变量名 、类型 、初值表,Dup用于把一个相同值赋值若干次,重复次数 dup(数据项),具体比如s db 30 dup(0),定义一个字节型变量,该变量占用30个字节,所有字节被初始化成0,equ是一个代码替换指令。

扩展资料

在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。

回答(3):

10 dup(1)重复定义了10个字元素,初始值为1,占用10*2=20个字节。

5 dup(?)重复定义了5个字元素(其初始值实际为0),占用5*2=10个字节

因此总共占用30个字节。

具体分析:在汇编定义变量的时候会用到dup,变量名 、类型 、初值表,Dup用于把一个相同值赋值若干次,重复次数 dup(数据项),具体比如s db 30 dup(0),定义一个字节型变量,该变量占用30个字节,所有字节被初始化成0,equ是一个代码替换指令。

扩展资料;

汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在底层,通常是程序优化或硬件操作的场合。

参考资料来源:百度百科-汇编语言

回答(4):

前面对于数据的定义:db:定义字节型数据(8位);dw:定义字型数据(16位)。

dd定义dowrd(double word,双字)型数据。比如:
data segment
db 1
dw 1
dd 1
data ends

解释:
在data段总定义了3个数据:
第一个数据为01H,在data:0处,占一个字节;
第二个数据为0001H,在data:1处,占1个字(2个字节);
第三个数据为00000001H,在data:3处,占2个字(4个字节)。

用div计算data段中第一个数据除以第二个数据后的结果,商存放在第三个数据的存储单元中。
data segment
dd 100001
dw 100
dw 0
data ends

分析:data段中的第一个数据是被除数,为dword型(32位)。在做除法之前,用dx和ax进行存储。将data:0字单元中的低16位存储在ax中,data:2字单元中的高16位存储在dx中。
mov ax, data
mov ds, ax

mov ax, data:[0] ;ds:0字单元中的低16位存储到ax中
mov dx, data:[2] ;ds:2字单元中的高16位存储到16中
div word ptr ds:[4] ;用dx:ax中的32位数据除以ds:4字单元中的数据
mov ds:[6], ax ;将商存储到ds:6字单元中

dup是一个操作符,在汇编语言中同db、dw、dd等一样,也是由编译器识别处理的符号。它是和db、dw、dd等数据定义伪指令配合使用的,用来进行数据的重复。

db 3 dup (0):定义了3个字节,它们的值都是0,相当于db 0, 0, 0。

db 3 dup (0,1,2);定义了9个字节,它们是0,1,2,0,1,2,0,1,2,相当于:db 0,1,2,0,1,2,0,1,2。

db 3 dup ('abc', 'ABC');定义了18个字节,他们'是abcABCabcABCabcABC',相当于:db 'abcABCabcABCabcABC'。

dup的使用格式如下:
db 重复的次数 dup (重复的字节型数据)。
dw 重复的次数 dup (重复的字型数据)。
dd 重复的次数 dup (重复的双字数据)。

dup是一个十分有用的操作符,比如我们要定义一个容量为200个字节的栈段,如果不用dup,则需要大量的代码来进行定义。如果用dup的话:
stack segment
db 200 bup (0)
stack ends

回答(5):

10 dup(1)重复定义了10个字元素,初始值为1,占用10*2=20个字节。
5 dup(?)重复定义了5个字元素(其初始值实际为0),占用5*2=10个字节
因此总共占用30个字节