询问一个微机原理中的汇编语言小问题,望赐教
我的程序是这样的,要求是首先把数据段中的list转到附加段中的result,然后在result中进行冒泡排序。程序:datasegmentorg0000hlistdb12...
我的程序是这样的,要求是首先把数据段中的list转到附加段中的result,然后在result中进行冒泡排序。
程序:
data segment
org 0000h
list db 12,7,1,8,13,10
count equ $-list
data ends
extra segment
org 1000h
result db 6 dup(?)
extra ends
sort segment
assume cs:sort,ds:data,es:extra
start:mov ax,data
mov ds,ax
mov ax,extra
mov es,ax
lea si,list
lea di,result
mov cx,6
cld
rep movsb
begin:mov ax,extra
mov es,ax
mov cx,count-1
loop1:mov dx,cx
mov bx,0
loop2:mov al,es:result[bx]
cmp al,es:result[bx+1]
jae no_change
xchg al,es:result[bx+1]
mov es:result[bx],al
no_change:
add bx,1
loop loop2
mov cx,dx
loop loop1
mov ax,4c00h
int 21h
sort ends
end begin
有两个问题:第一,为什么list的偏移地址是0100?应该是0000才对啊
如果有问题,请问怎么改回正常,使偏移地址返回0000?
第二个问题,最后我要通过debug程序给老师看list和result的结果,但是我要知道段寄存器ds和es的值,请问是否有什么简洁的方法,可以在已经完成转移字符串和对result冒泡排序之后快速查询到ds和es的值,从而能够显示出result和list来,如果没有,请提供一下自己的解决方案,谢谢啦
如果程序有错误的话,也希望指出 展开
程序:
data segment
org 0000h
list db 12,7,1,8,13,10
count equ $-list
data ends
extra segment
org 1000h
result db 6 dup(?)
extra ends
sort segment
assume cs:sort,ds:data,es:extra
start:mov ax,data
mov ds,ax
mov ax,extra
mov es,ax
lea si,list
lea di,result
mov cx,6
cld
rep movsb
begin:mov ax,extra
mov es,ax
mov cx,count-1
loop1:mov dx,cx
mov bx,0
loop2:mov al,es:result[bx]
cmp al,es:result[bx+1]
jae no_change
xchg al,es:result[bx+1]
mov es:result[bx],al
no_change:
add bx,1
loop loop2
mov cx,dx
loop loop1
mov ax,4c00h
int 21h
sort ends
end begin
有两个问题:第一,为什么list的偏移地址是0100?应该是0000才对啊
如果有问题,请问怎么改回正常,使偏移地址返回0000?
第二个问题,最后我要通过debug程序给老师看list和result的结果,但是我要知道段寄存器ds和es的值,请问是否有什么简洁的方法,可以在已经完成转移字符串和对result冒泡排序之后快速查询到ds和es的值,从而能够显示出result和list来,如果没有,请提供一下自己的解决方案,谢谢啦
如果程序有错误的话,也希望指出 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询