汇编语言字符串数组中字符串存储时DB DW怎么确定是选用DB存储还是DW存储?

汇编中的DW是什么意思那DB 它们什么作用_百度知道
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
汇编中的DW是什么意思那DB 它们什么作用
我有更好的答案
其后的每个数据占用两个字节,即给每个变量分配1字节内存1、汇编语言中,DW表示字类型的变量; 而DB是字节类型。 2、d1 dw 1234h和d2 db 12h,34h在实际运行效果上是不一样的
采纳率:85%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
汇编语言基础下列语句在存储器中分别为变量分配多少字节?VR1\x05\x05DW\x059VR2\x05\x05DW\x054 DUP(?)CONT \x05EQU\x0510VR3\x05\x05DD\x05CONT DUP(?)VR4\x05\x05DB\x052 DUP(?,CONT DUP(0))VR5\x05\x05DB\x05‘HOW ARE YOU?’VR4为什么是44B?
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
一个字占2字节VR2 4*2=8
4DUP(?)表示4个CONT 不占VR3 10*4=40 DD双字,占4个VR4 2*(1+10)=22个VR5 12个,
注意空格也算
VR4是44,不是22
VR4绝对不是44,我刚测试了
哦, 可能答案错了吧
为您推荐:
扫描下载二维码变量定义伪指令
查看: 3482|
摘要: 1. {DB|DW|DD|DQ|DT} 表达式 , 表达式 ; 2. 表达式 为数据项分配存储单元的 , 用来留预存单元 . TEMP DB ? 3. 带 DUP 的表达式 重复数据定义操作符 DUP( 表达式 ) TAB1 DB 10H DUP 保留 10H 个字节单元变量定义( De ...
1. [& 变量名 &]{DB|DW|DD|DQ|DT}& 表达式 &,& 表达式 &; 2. 表达式 为数据项分配存储单元的 , 用来留预存单元 . TEMP DB ? 3. 带 DUP 的表达式 重复数据定义操作符 DUP&( 表达式 )& TAB1 DB 10H DUP 保留 10H 个字节单元变量定义( Define )伪指令为变量申请固定长度的存储空间,并可同时将相应的存储单元初始化变量名 伪指令助记符 初值表变量定义伪指令最常使用变量名变量名为用户自定义标识符,表示初值表首元素的逻辑地址;用这个符号表示地址,常称为符号地址变量名可以没有 , 这种情况,汇编程序将直接为初值表分配空间,无符号地址设置变量名是为了方便存取它指示的存储单元初值表初值表是用逗号分隔的参数主要由数值常数、表达式或?、 DUP 组成?——表示初值不确定,即未赋初值;DUP ——表示重复初值DUP 的格式为:重复次数 DUP( 重复初值参数 )变量定义伪指令助记符变量定义伪指令根据申请的主存空间单位分类DB ——定义字节伪指令DW ——定义字伪指令DD ——定义双字伪指令DF ——定义 3 字伪指令DQ ——定义 4 字伪指令DT ——定义 10 字节伪指令还有定位伪指令定义字节单元伪指令 DB DB 伪指令用于分配一个或多个字节单元,并可以将它们初始化为指定值初值表中每个数据一定是字节量( Byte ),存放一个 8 位数据:可以是 0~255 的无符号数或是- 128 ~+ 127 带符号数也可以是字符串常数data segment ;数据段X db 'a',-5db 2 dup(100),?Y db 'ABC'data ends字节单元定义实例mov al,X; 此处 X 表示它的第 1 个数据,故 AL ← 'a'inc X+1; 对 X 为始的第 2 个数据减 1 ,故成为 -4mov Y,al; 现在 Y 这个字符串成为'aBC'字节变量的应用定义字单元伪指令 DWDW 伪指令用于分配一个或多个字单元,并可以将它们初始化为指定值初值表中每个数据一定是字量( Word ),一个字单元可用于存放任何 16 位数据:一个段地址一个偏移地址两个字符0 ~ 65535 之间的无符号数- 32768 ~+ 32767 之间的带符号数data segment ;数据段count dw 8000h,?,'AB'maxint equ 64hnumber dw maxintarray dw maxint dup(0)data ends
字单元定义实例字变量和字常量的定义:WNUM EQU 5678H; 定义 WNUM 为常量COUNT DW 20H; 定义 COUNT 变量,假设在数据段的偏移地址为 10H字变量和字常量的应用:MOV AX,[BX+SI+WNUM] ; MOV AX,[BX+SI+5678H]MOV AX,COUNT ; MOV AX,[0010H]MOV AX,[SI+COUNT] ; MOV AX,COUNT[SI]; MOV AX,[SI+10H]LEA BX,COUNT ; LEA BX,[0010H]MOV BX,OFFSET COUNT ; MOV BX,0010H字变量和字常量定义双字单元伪指令 DDDD 伪指令用于分配一个或多个双字单元,并可以将它们初始化为指定值初值表中每个数据是一个 32 位的双字量( Double Word ):可以是有符号或无符号的 32 位整数也可以用来表达 16 位段地址(高位字)和 16 位的偏移地址(低位字)的远指针vardd DD 0,?,hfarpoint DD h其他数据单元定义伪指令定义 3 字伪指令 DF ——用于为一个或多个 6 字节变量分配空间及初始化6 字节常用在 32 位 CPU 中表示一个 48 位远指针( 16 位段选择器 :32 位偏移地址)定义 4 字伪指令 DQ ——用于为一个或多个 8 字节变量分配空间及初始化8 字节变量可以表达一个 64 位整数定义 10 字节伪指令 DT ——用于为一个或多个 10 字节变量分配空间及初始化 10 字节变量可以表达扩展精度浮点数例 : 数据定义综合应用.model small.stack.databvar DB 16wvar DW 4*3dvar DD
; = 232 - 1qvar DQ ?DB 1,2,3,4,5tvar DT 2345 ; 定义了 BCD 码 2345Habc DB 'a','b','c'msg DB 'Hello',13,10,'$'bbuf DB 12 DUP('month')dbuf DD 25 DUP(?)CALLDOS EQU &int 21h&.code.startupmov bl,bvarmov ax,word ptr dvar[0]mov dx,word ptr dvar[2]; 取双字到 DX.AXmov dx,offset msgmov ah,09hCALLDOS.exit 0end定位伪指令定位伪指令控制数据的偏移地址ORG 参数ORG 伪指令是将当前偏移地址指针指向参数表达的偏移地址:ORG 100 从 100h 处安排数据或程序ORG $+10; 使偏移地址加 10 ,即跳过 10 个字节空间MASM 中,符号“ $ ”表示当前偏移地址值EVEN ; 从偶地址开始ALIGN 从 n 的整数倍地址开始
上一篇:下一篇:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:《汇编语言》习题
《汇编语言》习题
第一章 基础知识
1 .十六进制数 88H ,可表示成下面几种形式,请找出错误的表示( )。
① 无符号十进制数 136 ② 带符号十进制数- 120
③ 压缩型 BCD 码十进制数 88 ④ 8 位二进制数- 8 的补码表示
2 .十进制数转换为二进制数、八进制数、十六进制数
① 123 ② 87 ③ 12.25 ④ 177 ⑤ 215.125 ⑥ 113
3 .十进制数转换为 BCD 码
① 111 ② 131 ③ 23.44 ④ 123 ⑤ 345 ⑥ 127.36
4 .完成下列十六进制数的减法
① FFFF- AAAA= ② 12DF C 02DA =
5 .写出下列二进制数的补码表示:
① -1001110 ② -1001010 ③ -0010110 ④ +
6 . 16 位的二进制补码数所能表示的十进制最大数和最小数分别是什么 ? 16 位二进制数所能表示的无符号数的范围又是多大 ?
7 .假设两个二进制数 A =
, B = l0001100 ,试比较它们的大小
① A 、 B 两数均为带符号的补码数。
•& A 、 B 两数均为无符号数。
第二章 80x86 计算机组织
•& 一台微型计算机的字长为 16 位,如果采用字节编址,那么它可以访问的最大存储空间是多少字节?试用 16 进制数表示该机的地址范围 . 。
•& PC 机有哪两种主要的存储器?它们所起的主要作用是什么?
•& 有两个 16 位字 lEF5 和 2A 3c 分别存放在 PC 机存储器的 000B0H 和 000B3H 单元中,请用图表示出它们在存储器里的存放情况。
•& 写出下列存储器地址的段地址、偏移地址和物理地址。
(1)2314 : FD0 : 000A
5 .如果在一个程序段开始执行之前, (CS) = 0A 7F 0H , (EP) = 2D40H ,试问该程序段的第一个字的物理地址是什么 ?
6 .如果一个堆栈从地址 1250 : 0000 开始 SP 的内容为 0052H , 问:
(1) 栈顶地址是什么 ?
(2) 栈底地址是什么 ?
(3) 在 SS 中的段地址是什么 ?
(4) 存入数据 3445H 后, SP 的内容是多少 ?
第三章 80x86 的指令系统和寻址方式
1 .假定 (DS) = 212AH , (CS) = 0200H , (IP) = 2BC0H , (BX) = 1200H
D = 5119H , ( 224A 0) = 0600H 、 (275B9) = 098AH ,试确定 JMP 指令的转移地址。
(3) 段内直接寻址。
(2) 使用 Bx 及寄布器寻址方式的段内间接寻址。
(3) 使用 Dx 及寄存器相对寻址方式的段内间接寻址。
2 . 假定 (DS) = 2000H , (ES) = 2100H , (SS) = 1500H , (SI) = 00AOH , (BX) = 0100H ,
(BP) = 0010H ,数据变量 VAL 的偏移地址为 0050H ,请指出下列指令的源操作数字段是什么?寻址方式 ? 它的物理地址是多少 ?
(1) MOV AX , 0A 8H (2) MOV AX , BX (3) MOV Ax , [100H]
(4)MOV AX , VAL (5) MOV AX , [BX] (6)MOV AX , ES : [BX]
(7)MOV AX , [BP] (8)MOV AX , [SI] (9)MOV Ax , [BX 十 10]
(10)MOV Ax , VAL[BX] (11)MOV Ax , [BX][SI](12)MOV AX , VAL[BX][SI]
3 .设有关寄存器及存储单元的内容如下 (DS) = 2000H , (BX) = 0 』 00H , (SI) = 0002H , (20100) = 12H , (20101) = 34H , (20102) = 56H , (20103) = 78H , (21200) = 2AH , (22203) = 4CH , (22202) = 0B7H , (21203) = 65H ,试说明下
列各条指令执行完后 AX 寄存器的内容。
(1)MOV AX , 1200H (2)MOV AX , [BX] (3)MOV AX , [1200H]
(4)MOV AX , [BX] (5)MOV AX , 1100[BX] (6)MOV AX , [BX][SI]
(7)MOV AX , l100[BX][SI]
4 .下面有四条等值语句,
C1 EQU 1000
C3 EQU 20000
C4 EQU 25000
下列指令哪些是不对的 ? 请说明原因。
(1) ADD AL , C1 一 C2 (2)MOV AX , C 3 十 C 4 (3)SUB DX , C4 一 C3
(4)SUB AH , C4 一 C3 一 Cl (5)ADC AL , C2
5 .下面的数据传送指令中,错误的操作是( )。
① MOV SS:[BX+DI],1000H
② MOV DX,1000H
③ MOV WORD PTR[BX],1000H
④ MOV DS,2000H
6 .下面指令执行后,变量 DAB 中的内容是( )。
DAW DW 2A 05H
DAB DB 0FAH
MOV AL , BYTE PRT DAW
SUB DAB , AL
① 0DAH ② 0FAH ③ 0F 5H ④ 0D0H
7 .执行下列指令后,正确的结果是( )。
MOV AL , 100
MOV BL ,- 2
① AL = 100H BL = 02H ② AL = 64H BL = 0FEH
③ AL = 64H BL = 82H ④ AL = 100H BL = 0FEH
8 .完成下列操作,选用什么指令:
( 1 )将 AX 的内容,减去 0520H ,和上次运算的借位;
( 2 )将变量名 TABL 的段地址送 AX ;
9 . D1 DB 20H DUP (?)
请写出用一条指令实现取 D1 的偏移地址 =&SI 中的三种方法。
•& 汇编语言程序格式
1 .画图说明下列语句分配的存储空间及初始化的数据值。
(1)BYTE ― vAR DB ‘ BYTE 7' , 12 , 12H , 2DuP(0 , ? , 3DUP(1 , 2) , ?)
(2)WORD ― VAR DW 4DUP(0 , 1 , 2) , ? , -5 ,‘ BY ',‘ TE' , 256H
2 .有符号定义语句如下:
BUFF DB l , 2 , 3 ,‘ 123 '
EBUFF DB 0
L EQU EBUFF―BUFF
问 L 的值为多少?
3 .现有下列数据段:
DATA SEGMENT
STR1 DB ‘ ABCDEFGHIJKL'
COUNT EQU - STR1
BUF DB COUNT DUP ( 0 )
下面程序段是实现把 STR1 中所有字符逆向传送到 BUF 缓冲区(即 STR1 中第一个字符送到 BUF 的最后一个单元, STR1 中最后一字符送到 BUF 的第一个单元)。试把程序中所空缺的指令填上。
MOV SI , OFFSET BUF - 1
MOV DI , OFFSET BUF
MOV CX , COUNT
_________________
LOOP:MOVSB
_______________________________
4 .已知数据段定义如下:
DATA SEGMENT
BUF DW 'CD' , 1 , 3 DUP ( 4 , 2 DUP ( 8 , 6 ))
VRA DB 4AH
单独执行下列语句
LEA BX , BUF BX=_______
MOV CX , VRA-BUF CX=_______ (用十六进制数表示)。
第五章 循环与分支程序设计
5.1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
5.2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字母。
5.3 编写程序,将―个包含有 20 个数据的数组 M 分成两个数组:正数数组 P 和负数数组 N, 并分别把这两个数组中数据的个数显示出来。
5.4 有个首地址为 MEM 的 100D 字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。
5.5 在 STRING 到 STRING 十 99 单元中存放着一个字符串,试编制一个程序测试该字符串中是否存在数字,如有则把 CL 的第 5 位置 1 ,否则将该位置 0 。
5.6 试编写一程序,要求比较数组 ARRAY 中的三个 ]6 位补码数.并根据比较结果在终端上显示如下信息:
(1) 如果三个数都不相等则显示 0 ;
(2) 如果二个数有二个相等则显示 1 ;
(3) 如果二个敬都相等刚显示 2 。
第六章 子程序结构
6.1 设有 10 个学土的成绩分别是 76 、 69 、 81 , 90 、 73 、 88 、 99 、 68 、 100 、 80 分,试编一子程序统计 60~69 分, 70~79 分, 80~89 分, 90~99 分和 100 分的人数,并分别存放到 S6,S7,S8,S9,S10 单元中。
6.2 写―段子程序 SKIPLINE 。完成输出空行的功能。空出的行数在 AX 寄存器 中。
6.3 编写一个有主程序和子程序的程序模块,子程序的参数是一个 N 字节数组的首地址 TABLE 、数 N 以及字符 CHAR 。要求在 N 字节数组中查找字符 CHAR ,并记录该字符出现的次数。主程序则要求从键盘接受一串字符以建立字节数组 TABLE ,并逐个显示从键盘键入的每个字符 CHAR 以及它在 TABLE 数组中出现的次数。(为简单起见,假设出现的次数 ≤ 15 ,可以用十六进制形式把它显示出来。)
6.4 给定一个正数 N&1 存放在 NUM 单元中。试编写一段递归子程序 FIB(N), 并将结果存入 RESULT 单元中。
FIB 函数定义如下:
FIB ( 1 ) =1
FIB ( 2 ) =1
FIB ( n ) = FIB ( n-1 ) + FIB ( n-2 ) n&2
•& 高级汇编语言技术
7 . 1 定义宏指令 MOVE ,使它能将 N 个字符从一个字符区传送到另一个字符区。
7 . 2 编写一条宏指令 CLRB :完成用空格符将一字符区中的字符清除的工作。字符区
首地址及其长度为变元。
7 . 3 编写宏指令 DISPLAY :能显示已存放在数据区的信息 MESSAGE
7 . 4 试编写一段程序完成以下功能:如给定名为 x 的字符串长度大干 5 时,下列指
令将汇编 10 次: ADD AX , AX
7 . 5 建立一个你自己的宏库 MYLIB . LIB ,其中包括宏指令 CLS( 清屏 ) , LOCATE( 光
标定位 ) , DISPLAY( 显示信息 ) , MOVE( 字符传送 ) 和 STARTER( 段寄存器初始化 ) ,并编一
个小程序使用你的宏库。
•& 输入输出程序设计
8 . 1 写出指令将一个字节输出到端口 25H 。
写出指令将一个字从端口 1000H 输入。
8 . 2 用 CALL 指令来模拟实现 INT 21H 现实字符 T 的功能
8 . 3 试编写一段程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第
0 位为 1 。则与其相应的设备就输入―个字符;如果其中任一状态寄存器的第 3 位为 1 ,则整个输入过程就结束。两个状态寄存器的端口地址分别是 0024H 和 0036H ,与其相应的数据输入寄存器的端口为 0026H 和 0038H ,输入字符分别存入首地址为 BUFFl 和 BUFF2 的存储区中。
8 . 4 类型 14H 的中断向量在存储器的哪些单元里 ?
8 . 5 假设外部设备中有一台硬币兑换器,其状态寄存器的端口地址为 0006 ,数据输入
寄存器的端口地址为 0005 ,数据输出奇存器的端口地址为 0007 。试用查询方式编制一程序,
该程序作空闲循环等待纸币输入,当状态寄存器的第 2 位为 1 时表示有纸币输入,此时可从
数据输入寄存器输入的代码中测出纸币品种,一角纸币的代码为 01 ,二角纸币为 02 ,五角纸币则为 03 ,然后程序在状态寄存器的第 3 位变成 1 后,把应兑换的 5 分硬币数 ( 用 16 进制表示 ) 从数据输出奇存器输出。
第九章 BIOS 和 DOS 中断
9 . 1 INT 21H 的键盘输入功能 1 和功能 8 有什么区别
9 . 2 给定 (SP = 0100 , (SS) = 0300 、 (PWS) = 0240 ,以及存储单元的内容 (00020) =
0040 , (00022) = 0100 ,在段地址为 0900 及偏移地址为 00A 0 的单元中有一条中断指令 INT 8 试问执行 INT 8 指令后, SP 、 SS 、 IP 、 PWS 的内容是什么 ? 栈顶的三个字是什么 ?
编写一个程序,接收从键盘输入的 10 个十进制数字,输入回车符则停止输入,然后将这些数字加密后 ( 用 XLAT 指令 ) 存入内存缓冲区 BUFFER 。加密表为
输入数字; 0 、 I 、 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9
密码数字; 7 、 5 、 9 、 1 、 3 、 6 、 8 、 0 、 2 、 4
9 . 3 编写指令使其完成下列要求:
(1) 读当前光标位置。
(2) 把光标移到屏底一行的开始。
(3) 在屏幕的左上角以正常属性显示一个字母 M
9 . 4 游戏程序常常用随机数来校制某图形在屏幕 1 :移动,请编写 一程序,用随机数来
控制笑脸符 (ASCII 码 02) 显示的位置。笑脸将每次显示的列号总是递增 1 ,而行的位置可能是前行的上一行、下一行或同一行,这根据随机数是 0 、 1 或 2 来决定,当行号为 0 、 24 或列号为 79 时显示结束。笑脸符在每个位置显示 1 / 4 秒。
9 . 5 从键盘上输入一行字符,如果这行字符比前一次输入的一行字符长度长,则保存
该行字符,然后继续输入另―行字符;如果它比前一次输入的行短,则不保存这行字符。按下 $ :则输入结束,最后将最长的―行字符串显示出来,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

我要回帖

更多关于 汇编语言输入字符串 的文章

 

随机推荐