一道汇编题,没有一点思路。求高手给讲解一下~
在一个长度为10的数组中,显示出当前数组中的元素,并显示出最大和最小的那个数,再去掉最大最小数,显示当前数组中元素,再求当前所有元素的平均值~~ 额~忘了说~是8086汇编~ 菜鸟飘过啊,菜鸟飘过~~~ 这个简单,用ja之类的来实现,然后要注意是否会溢出之类的 602968956 发表于 2014-5-4 18:51 static/image/common/back.gif额~忘了说~是8086汇编~
mov cx,9 ;10个数, 只要比较 10-1次就行了
mov bx,0 ; 这个0 代表数组的第一元素的偏移地址
mov ax,0 ;ax存放最大数
mov ax, ;假设第一个数是最大数
s :cmp ax, ; 拿当前最大数 减去 下一个数
ja s2 ;如果当前最大数,大于下一个数,那么ax不变,直接跳到s2
;执行到这里就说明 ax要么就小于或等于 下一个数,就直接把下一个数,放到ax里面
;此时ax又变成了最大数, 就算他是等于的话,交换一下也没事.
mov ax,
s2: inc bx
inc bx
loop s
;上面的循环执行完了,就找出最大的数了,存放在ax中
push ax ;然后我们保存ax的值,其实也可以直接显示了,直接写到显存 b800就是显存的段地址
mov ,0 在将 源 最大数 置0,因为要求 要去掉
;球最小数 就和上面相反就行了,你可以写在一个循环里面
; 球平均值也好办,就全部加起来,反正最大数和最小数 已经被去掉了,然后除以8 就得到平均数了 xiaosawanjava 发表于 2014-5-4 20:43 static/image/common/back.gif
mov cx,9 ;10个数, 只要比较 10-1次就行了
mov bx,0 ; 这个0 代表数组的第一元素的偏移地址
我写好啦~~不过编译时候有个错~~~不知道怎么改,还有显示数组里的元素不知道怎么弄~....能再帮我看一下吗???谢啦!程序我贴在下面~ assume cs:code ds:data
data segment
ARRAY dw39,52,61,29,38,71,21,56,88,99
average dw ?
max dw ?
min dw ?
average2 dw ?
data ends
code segment
start:
//显示当前数组元素
mov ax,0 ;
mov bx,ARRAY
mov cx,10 ;计算未除去最大最小值时候的平均值
s:
add ax,
inc bx
inc bx
loop s
mov bl,10 ;
div bl ;DIV BL;商在AL中,余数在AH中
mov ,ax
mov bx,ARRAY ;进行第一次比较,找出最小值,并且去掉
mov ax,0 ;用AX存放最小值
mov ax, ; 假设第一个数最小
mov cx,10
MIN:cmp ax,
jb min1
mov ax,
MIN1: inc bx
inc bx
loop MIN
mov ,ax ;把最小值保存起来
mov ,0;去掉最小值
//显示出最小值
mov bx,ARRAY ; 进行第二次比较找出最大值
mov ax,0 ;用AX存放最大数
mov ax, ;假设第一个数是最大数
mov cx,10 ;设置循环次数
MAX: cmp ax,
ja MAX1 ;如果当前最大数,大于下一个数,那么ax不变,直接跳到s2
mov ax,
MAX1:
inc bx
inc bx
loop MAX
mov ,ax ;把AX保存起来,也可以直接显示
mov ,0 ;去掉最大值,也就是把最大值置零
//显示出最大值
mov ax,0 ;
mov bx,ARRAY
mov cx,10 //计算除去最大最小值时候的平均值
average:
add ax,
inc bx
inc bx
loop average
mov bl,8 ;
div bl ;DIV BL;商在AL中,余数在AH中
mov ,ax
//显示除去最大最小之后的平均值
页:
[1]