| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 559 人关注过本帖
标题:[求助]数据在内存中是如何存储的?
只看楼主 加入收藏
damofei
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-5-10
收藏
 问题点数:0 回复次数:3 
[求助]数据在内存中是如何存储的?
大家看看这个程序实现的是什么功能?
data segment
a1 db '请输入第一个数:$'
b1 db 0dh,0ah, '请输入第二个数:$'
c1 db 0dh,0ah, '结果为:$'
A db 52,0,52 dup(0)
B db 52,0,52 dup(0)
s db 52 dup(0)
s1 db 0dh,0ah,'输入错误!$'
data ends
stack1 segment para stack
dw 100 dup(0)
stack1 ends
code segment
assume cs:code,ds:data,ss:stack1
start: mov ax,data
mov ds,ax
mov dx,offset a1
mov ah,09h
int 21h
mov dx, offset A
mov ah,0ah
int 21h
mov dx,offset b1
mov ah,09h
int 21h
mov dx, offset B
mov ah,0ah
int 21h
mov dx,offset c1
mov ah,09h
int 21h
mov si,offset A+2
mov al, A+1
mov ah,0
add ax,si
mov di,ax
dec di
f1: cmp si,di
jae d2cl
mov al,[si]
xchg aL,[di]
xchg al,[si]
inc si
dec di
jmp f1
d2cl: mov si,offset B+2
mov al, B+1
mov ah,0
add ax,si
mov di,ax
dec di
f2: cmp si,di
jae szcl
mov al,[si]
xchg al,[di]
xchg al,[si]
inc si
dec di
jmp f2
szcl: mov cx,50
mov dl,A+1
mov si,offset A+2
mov di, offset A
szcl1: cmp dl,0
jz bu0
mov al,[si]
cmp al ,'0'
jnb d1
jmp err
d1:cmp al,'9'
jna d2
jmp err
d2:and al ,0fh
mov [di], al
inc si
inc di
dec dl
dec cx
jmp szcl1
bu0: cmp cx,0
jz blend
mov byte ptr [di],0
dec cx
inc di
jmp bu0
blend: mov cx,50
mov dl,B+1
mov si,offset B+2
mov di, offset B
szcl2: cmp dl,0
jz bu01
mov al,[si]
cmp al ,'0'
jnb d11
jmp err
d11: cmp al,'9'
jna d22
jmp err
d22: and al ,0fh
mov [di], al
inc si
inc di
dec dl
dec cx
jmp szcl2
bu01: cmp cx,0
jz jf
mov byte ptr [di],0
dec cx
inc di
jmp bu01
jf: mov cx,0
mov si,offset A
mov di,offset B
mov bx,offset s
clc
pushf
l2: mov al,[si]
popf
adc al,[di]
aaa
mov [bx],al
inc si
inc di
inc cx
inc bx
pushf
cmp cx,50
jz jsend
jmp l2
jsend: popf
jnc jieshu
mov byte ptr [bx],1
jieshu: mov si,50
mov bx,offset s
find0: cmp byte ptr [bx+si],0
jnz exitfind0
dec si
cmp si ,0
jz exitfind0
jmp find0
exitfind0: add si,bx
push si
mov di,offset s
p3: cmp si,di
jbe xszf
mov al,[si]
xchg al,[di]
xchg al,[si]
dec si
inc di
jmp p3
xszf: mov si,offset s
pop di
p5: add byte ptr [si],30h
inc si
cmp si,di
ja p4
jmp p5
p4: mov byte ptr [si], '$'
mov dx,offset s
mov ah,09h
int 21h
mov ah,4ch
int 21h
err: mov dx, offset s1
mov ah,09h
int 21h
mov ah,4ch
int 21h

code ends
搜索更多相关主题的帖子: 内存 数据 
2006-11-23 11:34
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 

书上应该有内存的结构


2006-11-24 09:00
damofei
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-5-10
收藏
得分:0 
A db 52,0,52 dup(0)
B db 52,0,52 dup(0)
这里为什么这么定义啊,52是总的空间,0是什么呢?我不明白

思想有多远,就能走多远!
2006-11-27 08:29
wchx215
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2006-9-4
收藏
得分:0 

在0ah功能中,ds:dx+1返回的是你输入的实际字符数。
0只不过是先给这个内存填充一个数,它要在0ah功能返回时才有用!

2006-11-27 12:45
快速回复:[求助]数据在内存中是如何存储的?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.075664 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved