请汇编高手给我详细讲一下这个程序每一步有什么意思 本人基础很差,谢谢啦
datasegmentbdb10ddb?adb10dup(?)dataendscodesegmentassumecs:code,ds:datastart:movax,da...
data segment
b db 10
d db ?
a db 10 dup(?)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea dx,b
mov ah,0Ah
int 21h
mov al,d
cbw
mov cx,ax
dec cx
loop1:
mov di,cx
mov bx,0
loop2:
mov al,a[bx]
cmp al,a[bx+1]
jge continue
xchg al,a[bx+1]
mov a[bx],al
continue:add bx,1
loop loop2
mov cx,di
loop loop1
mov al,d
cbw
mov si,ax
mov a[si],24h
lea dx,a
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start 展开
b db 10
d db ?
a db 10 dup(?)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea dx,b
mov ah,0Ah
int 21h
mov al,d
cbw
mov cx,ax
dec cx
loop1:
mov di,cx
mov bx,0
loop2:
mov al,a[bx]
cmp al,a[bx+1]
jge continue
xchg al,a[bx+1]
mov a[bx],al
continue:add bx,1
loop loop2
mov cx,di
loop loop1
mov al,d
cbw
mov si,ax
mov a[si],24h
lea dx,a
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start 展开
1个回答
展开全部
data segment//数据段
b db 10 //10字节储存单元
d db ? //定义变量,暂不分配储存单元
a db 10 dup(?) //10字节储存单元
data ends
code segment //代码段
assume cs:code,ds:data//提示系统各段对应的是代码段和数据段
start://标号
mov ax,data
mov ds,ax //装载数据段ds
lea dx,b //取b偏移地址
mov ah,0Ah
int 21h //中断输入字符串b
mov al,d
cbw //有符号数位拓展
mov cx,ax
dec cx //cx=d作为计数循环控制
loop1:
mov di,cx
mov bx,0
loop2:
mov al,a[bx]
cmp al,a[bx+1]
jge continue
xchg al,a[bx+1]
mov a[bx],al
continue:add bx,1
loop loop2//内存a中实现从大到小的排列
mov cx,di
loop loop1
mov al,d
cbw
mov si,ax
mov a[si],24h
lea dx,a
mov ah,9
int 21h //中断,进行字符串输出
mov ah,4ch
int 21h //中断返回DOS
code ends
end start //代码段结束的一般结构
(该行注释是针对从该行开始,以上的代码。)
希望对你有帮助
b db 10 //10字节储存单元
d db ? //定义变量,暂不分配储存单元
a db 10 dup(?) //10字节储存单元
data ends
code segment //代码段
assume cs:code,ds:data//提示系统各段对应的是代码段和数据段
start://标号
mov ax,data
mov ds,ax //装载数据段ds
lea dx,b //取b偏移地址
mov ah,0Ah
int 21h //中断输入字符串b
mov al,d
cbw //有符号数位拓展
mov cx,ax
dec cx //cx=d作为计数循环控制
loop1:
mov di,cx
mov bx,0
loop2:
mov al,a[bx]
cmp al,a[bx+1]
jge continue
xchg al,a[bx+1]
mov a[bx],al
continue:add bx,1
loop loop2//内存a中实现从大到小的排列
mov cx,di
loop loop1
mov al,d
cbw
mov si,ax
mov a[si],24h
lea dx,a
mov ah,9
int 21h //中断,进行字符串输出
mov ah,4ch
int 21h //中断返回DOS
code ends
end start //代码段结束的一般结构
(该行注释是针对从该行开始,以上的代码。)
希望对你有帮助
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询