8086汇编语言题目求解 5
编写完整程序,求一个无符号数字节数组中的最大数和最小数,并按下面的格式将它们显示出来(显示结果为十进制形式)。(记住,是8086汇编语言)。TheMAXis:xxxxTh...
编写完整程序,求一个无符号数字节数组中的最大数和最小数,并按下面的格式将它们显示出来(显示结果为十进制形式)。(记住,是8086汇编语言)。
The MAX is:xxxx
The MIN is:xxxx 展开
The MAX is:xxxx
The MIN is:xxxx 展开
2个回答
展开全部
assume cs:code,ds:data,ss:stack
data segment
dw 86,22,65,20,77,45,302,38,2398,96
db 'The MAX is: ',0
db 'The MIN is: ',0
db 16 dup(0)
data ends
stack segment stack
db 16 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov ax,0b800h
mov es,ax
call cls
;计算最大值
mov ax,ds:[0]
mov bx,2
mov cx,9
max:cmp ax,[bx]
jnb ma1
mov ax,[bx]
ma1:add bx,2
loop max
mov bp,0
mov si,46
mov bx,10
call numtoch
mov si,20 ;字符串地址
mov di,0h ;显示列
mov bx,640 ;显示行
mov ch,0 ;显示判断初值
mov ah,07h ;设置字符显示属性为黑底白字
call strdis
mov si,46
call numdis
;计算最小值
mov ax,ds:[0]
mov bx,2
mov cx,9
min:cmp ax,[bx]
jna mi1
mov ax,[bx]
mi1:add bx,2
loop min
mov bp,0
mov si,46
mov bx,10
call numtoch
mov si,33 ;字符串地址
mov di,0h ;显示列
mov bx,960 ;显示行
mov ch,0 ;显示判断初值
mov ah,07h ;设置字符显示属性为黑底白字
call strdis
mov si,46
call numdis
mov ax,4c00h
int 21h
;数字转换为ASCII码子程序
numtoch:mov dx,0
div bx
add dx,30h
push dx
inc bp
mov cx,ax
jcxz nr
jmp numtoch
nr: mov cx,bp
wd: pop dx
mov ds:[si],dl
inc si
loop wd
mov dl,0
mov ds:[si],dl
ret
;清屏子程序
cls:mov bx,0
mov cx,1840 ;清空0~23行
mov ax,0
c1: mov es:[bx],ax
add bx,2
loop c1
ret
;显示字符串子程序
strdis: mov al,[si]
mov es:[bx],ax
mov cl,al
jcxz str_r
add bx,2
inc si
jmp strdis
str_r: ret
;格式化显示数字子程序
numdis: mov cx,bp
gsh:cmp cx,4
jnb mt4
mov al,20h
mov es:[bx],ax
add bx,2
inc cx
jmp gsh
mt4:mov cx,bp
num:
mov al,ds:[si]
mov es:[bx+di],ax
add di,2
inc si
loop num
ret
code ends
end start
Windows下需要在进入Debug才能显示,已测试通过。
花了一晚才完成,给分吧!
data segment
dw 86,22,65,20,77,45,302,38,2398,96
db 'The MAX is: ',0
db 'The MIN is: ',0
db 16 dup(0)
data ends
stack segment stack
db 16 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov ax,0b800h
mov es,ax
call cls
;计算最大值
mov ax,ds:[0]
mov bx,2
mov cx,9
max:cmp ax,[bx]
jnb ma1
mov ax,[bx]
ma1:add bx,2
loop max
mov bp,0
mov si,46
mov bx,10
call numtoch
mov si,20 ;字符串地址
mov di,0h ;显示列
mov bx,640 ;显示行
mov ch,0 ;显示判断初值
mov ah,07h ;设置字符显示属性为黑底白字
call strdis
mov si,46
call numdis
;计算最小值
mov ax,ds:[0]
mov bx,2
mov cx,9
min:cmp ax,[bx]
jna mi1
mov ax,[bx]
mi1:add bx,2
loop min
mov bp,0
mov si,46
mov bx,10
call numtoch
mov si,33 ;字符串地址
mov di,0h ;显示列
mov bx,960 ;显示行
mov ch,0 ;显示判断初值
mov ah,07h ;设置字符显示属性为黑底白字
call strdis
mov si,46
call numdis
mov ax,4c00h
int 21h
;数字转换为ASCII码子程序
numtoch:mov dx,0
div bx
add dx,30h
push dx
inc bp
mov cx,ax
jcxz nr
jmp numtoch
nr: mov cx,bp
wd: pop dx
mov ds:[si],dl
inc si
loop wd
mov dl,0
mov ds:[si],dl
ret
;清屏子程序
cls:mov bx,0
mov cx,1840 ;清空0~23行
mov ax,0
c1: mov es:[bx],ax
add bx,2
loop c1
ret
;显示字符串子程序
strdis: mov al,[si]
mov es:[bx],ax
mov cl,al
jcxz str_r
add bx,2
inc si
jmp strdis
str_r: ret
;格式化显示数字子程序
numdis: mov cx,bp
gsh:cmp cx,4
jnb mt4
mov al,20h
mov es:[bx],ax
add bx,2
inc cx
jmp gsh
mt4:mov cx,bp
num:
mov al,ds:[si]
mov es:[bx+di],ax
add di,2
inc si
loop num
ret
code ends
end start
Windows下需要在进入Debug才能显示,已测试通过。
花了一晚才完成,给分吧!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询