
请教汇编语言编程指导!!急~~~
1.在一首地址为ARRAY的数组,请将其按由大到小的顺序排序.2.将正数N插入一个已经排好序的数组的正确位置.请将上述两题用汇编语言的格式写出了,并上机运行成功!!我对汇...
1.在一首地址为ARRAY的数组,请将其按由大到小的顺序排序.
2.将正数N插入一个已经排好序的数组的正确位置.
请将上述两题用汇编语言的格式写出了,并上机运行成功!!
我对汇编语言的学习实在有些吃力,只好向各位请教了!
请各位多多帮忙,先行谢谢各位~~~~~~
用8086的汇编编,谢谢了
2、编写程序把二进制数X中的二进制数用十六进制数的形式在屏幕上显示出来。(要求分别采用两种方法,一种使用xlat命令的方法,另一种不使用该命令) 展开
2.将正数N插入一个已经排好序的数组的正确位置.
请将上述两题用汇编语言的格式写出了,并上机运行成功!!
我对汇编语言的学习实在有些吃力,只好向各位请教了!
请各位多多帮忙,先行谢谢各位~~~~~~
用8086的汇编编,谢谢了
2、编写程序把二进制数X中的二进制数用十六进制数的形式在屏幕上显示出来。(要求分别采用两种方法,一种使用xlat命令的方法,另一种不使用该命令) 展开
展开全部
1.
DSEG SEGMENT
count db 5
array dw 8,5,16,84,32
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
mov cx,count
dec cx
loop1: mov di,cx
mov bx,0
loop2: mov ax,array[bx]
cmp ax,array[bx+2]
jle continue
xchg ax,array[bx+2]
mov array[bx],ax
continue: add bx,2
loop loop2
mov cx,di
loop loop1
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
2.
;程序模板
ESEG SEGMENT
;附加段:在此处添加程序所需的数据
array dw 12,11,22,33,44,55,66,77,88,99,111,222,333
n dw 55
low_idx dw ?
high_idx dw ?
ESEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:ESEG,es:ESEG
MAIN PROC FAR ;主程序入口
mov ax, eseg
mov ds, ax
mov es,ax
;此处添加主程序代码
call b_search
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
b_search proc near
lea di,array
mov ax,n
cmp ax, [di+2] ; (ax)与第一个元素比较
ja chk_last
lea si, [di+2]
je exit ; (ax)=第一个元素,找到退出
stc
jmp exit ; (ax)<第一个元素,未找到退出
chk_last:
mov si,[di] ;元素个数
shl si, 1 ; 计算最后一个元素
add si,di ; 的地址
cmp ax, [si] ; (ax)与最后一个元素比较
jb search
je exit ; (ax)=最后一个元素,找到退出
stc
jmp exit ; (ax)>最后一个元素,未找到退出
search:
mov low_idx, 1
mov bx, [di] ;个数
mov high_idx, bx
mov bx, di
mid:
mov cx, low_idx
mov dx, high_idx
cmp cx, dx
ja no_match
add cx, dx
shr cx, 1
mov si, cx
shl si, 1
compare:
cmp ax, [bx+si]
je exit
ja higher
dec cx
mov high_idx, cx
jmp mid
higher:
inc cx
mov low_idx, cx
jmp mid
no_match:
stc
exit:
ret
b_search endp
CSEG ENDS
END MAIN
补充题答案:
1.
;程序模板
DSEG SEGMENT
;数据段:在此处添加程序所需的数据
X DW 0001001000110100B
TABLE DW 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41h,42h,43h,44h,45h,46h
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
;此处添加主程序代码
mov di,X
lea bx,table
mov ch,4
rotate:
mov cl,4
rol di,cl
mov ax,di
and al,0fh
xlat
printit:
mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
2.
;程序模板
DSEG SEGMENT
;数据段:在此处添加程序所需的数据
X DW 0001001000110100B
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
;此处添加主程序代码
mov bx,X
mov ch,4
rotate:
mov cl,4
rol bx,cl
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl printit
add al,7h
printit:
mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
DSEG SEGMENT
count db 5
array dw 8,5,16,84,32
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
mov cx,count
dec cx
loop1: mov di,cx
mov bx,0
loop2: mov ax,array[bx]
cmp ax,array[bx+2]
jle continue
xchg ax,array[bx+2]
mov array[bx],ax
continue: add bx,2
loop loop2
mov cx,di
loop loop1
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
2.
;程序模板
ESEG SEGMENT
;附加段:在此处添加程序所需的数据
array dw 12,11,22,33,44,55,66,77,88,99,111,222,333
n dw 55
low_idx dw ?
high_idx dw ?
ESEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:ESEG,es:ESEG
MAIN PROC FAR ;主程序入口
mov ax, eseg
mov ds, ax
mov es,ax
;此处添加主程序代码
call b_search
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
b_search proc near
lea di,array
mov ax,n
cmp ax, [di+2] ; (ax)与第一个元素比较
ja chk_last
lea si, [di+2]
je exit ; (ax)=第一个元素,找到退出
stc
jmp exit ; (ax)<第一个元素,未找到退出
chk_last:
mov si,[di] ;元素个数
shl si, 1 ; 计算最后一个元素
add si,di ; 的地址
cmp ax, [si] ; (ax)与最后一个元素比较
jb search
je exit ; (ax)=最后一个元素,找到退出
stc
jmp exit ; (ax)>最后一个元素,未找到退出
search:
mov low_idx, 1
mov bx, [di] ;个数
mov high_idx, bx
mov bx, di
mid:
mov cx, low_idx
mov dx, high_idx
cmp cx, dx
ja no_match
add cx, dx
shr cx, 1
mov si, cx
shl si, 1
compare:
cmp ax, [bx+si]
je exit
ja higher
dec cx
mov high_idx, cx
jmp mid
higher:
inc cx
mov low_idx, cx
jmp mid
no_match:
stc
exit:
ret
b_search endp
CSEG ENDS
END MAIN
补充题答案:
1.
;程序模板
DSEG SEGMENT
;数据段:在此处添加程序所需的数据
X DW 0001001000110100B
TABLE DW 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41h,42h,43h,44h,45h,46h
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
;此处添加主程序代码
mov di,X
lea bx,table
mov ch,4
rotate:
mov cl,4
rol di,cl
mov ax,di
and al,0fh
xlat
printit:
mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
2.
;程序模板
DSEG SEGMENT
;数据段:在此处添加程序所需的数据
X DW 0001001000110100B
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
;此处添加主程序代码
mov bx,X
mov ch,4
rotate:
mov cl,4
rol bx,cl
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl printit
add al,7h
printit:
mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询