汇编语句定义数据的含义

quietwave 2007-06-01 08:36:28
下面的程序用十进制输入和输出一个数字.
请大侠帮忙解释一下,数据段中
KEY_BUF DB 10
DB ?
这句话的含义.
key_buf到底分配了几个字节的空间?
那个10是表示10个字节还是,一个字节初始值为10
下面那个db ?是分配一个字节的缓冲区吗?

那个output_as_dec 是我编的,请各位给点指点批评。

DATA SEGMENT
KEY_BUF DB 10
DB ?
DB 10 DUP(?)
DATA1 DW ?
OVERFLOW_MSG DB '---------OVERFLOW!!-----------$'
DATA ENDS

ESEG SEGMENT
TEN_POWER DW 1,10,100,1000,10000
COUNT EQU 5
ESEG ENDS

CODE SEGMENT
ASSUME CS:CODE, DS: DATA,ES:ESEG
START:
MOV AX,DATA
MOV DS,AX
MOV AX,ESEG
MOV ES,AX
MOV DX,OFFSET KEY_BUF
MOV AH,0AH
INT 21H
MOV SI,OFFSET KEY_BUF+1
MOV BL,[SI]
INC SI
MOV AX,0
TRANS:
MOV DX,10
MUL DX
MOV DH,0
MOV DL,[SI]
AND DL,0FH
ADD AX,DX
INC SI
DEC BL
JNZ TRANS
MOV DATA1,AX
CALL OUTPUT
MOV BX,AX
CALL OUTPUT_AS_DEC
MOV AX,4C00H
INT 21H


;---------输出二进制的子程序---------
OUTPUT PROC NEAR
PUSH AX
MOV DL,0AH
MOV AH,2
INT 21H
MOV DL,0DH
INT 21H
POP AX
PUSH AX
MOV BH,10H
MOV CX,AX
OUT1:
MOV DL,CH
AND DL,80H
ROL DL,1
ADD DL,30H
MOV AH,2
INT 21H
DEC BH
CMP BH,0
JZ EDED
ROL CX,1
JMP OUT1
EDED:
MOV DL,0AH
MOV AH,2
INT 21H
MOV DL,0DH
INT 21H

POP AX
RET
OUTPUT ENDP

;--------利用查表法,用十进制输出bx中的数值----------
OUTPUT_AS_DEC PROC NEAR
PUSH AX
MOV CX,COUNT
LEA DI,TEN_POWER

SEARCH: ;查找bx最高次幂
CMP BX,ES:[DI]
JB END_SEARCH
ADD DI,2
LOOP SEARCH
END_SEARCH:
CMP CX,0 ;判断是否溢出
JE OVERFLOW
MOV AX,COUNT
SUB AX,CX
MOV CX,AX
TRAN:
SUB DI,2
MOV AX,BX
MOV DX,0
DIV TEN_POWER[DI]
MOV BX,DX
MOV DL,AL
MOV AH,2
ADD DL,30H
INT 21H
LOOP TRAN
POP AX
RET
OVERFLOW:
MOV AH,9
LEA DX,OVERFLOW_MSG
INT 21H
POP AX
RET
OUTPUT_AS_DEC ENDP


CODE ENDS
END START
...全文
504 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianzhentianxia 2007-06-05
  • 打赏
  • 举报
回复
10 和 ? 在内存中应该相邻
jrjj 2007-06-01
  • 打赏
  • 举报
回复
MOV DX,OFFSET KEY_BUF
MOV AH,0AH
INT 21H
你代码里也有写啊,去查下21中断的0AH功能就明白了
mengshijie_1981 2007-06-01
  • 打赏
  • 举报
回复
KEY_BUF DB 10 ;相当于char KEY_BUF=10,分配了一个字节单元,把给单元初始化为10
DB ? ;分配不一个字节,但没有初始化

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧