请教一个简单的汇编程序问题,大家帮帮忙

10个有符号数,输出最大的数和最小的数,请问这个程序怎么写,用汇编语言,我初学不怎么会,请大家帮帮忙,谢谢了!

调试已通过,解题思路:
首先对10个有符号数按从小到大排序,然后第一个元素就是最小的,最后一个元素就是最大的
data segment
mes1 db 'the max:$'
mes2 db 'the min:$'
a dw -1,2,100,-10,99,120,89,2334,90,1239
data ends

code segment
main proc far
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax

mov ax,data
mov ds,ax
;以下是起泡排序核心代码
mov cx,10
dec cx

loop1:
mov di,cx
mov bx,0
loop2:
mov ax,a[bx]
cmp a[bx+2],ax
jge cotinue
xchg ax,a[bx+2]
mov a[bx],ax

cotinue:
add bx,2
loop loop2
mov cx,di
loop loop1

mov dx,offset mes1
mov ah,09h
int 21h
call crlf
mov bx,a[18]
call bini ;转换为十进制的子程序

call crlf ;回车换行子程序
mov dx,offset mes2
mov ah,09h
int 21h
call crlf
mov bx,a[0]
call bini
ret
main endp

bini proc near
mov cx,10000d
call bin
mov cx,1000d
call bin
mov cx,100d
call bin
mov cx,10d
call bin
mov cx,1d
call bin
ret
bini endp

bin proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,02h
int 21h
ret
bin endp

crlf proc near
mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21
ret
crlf endp
code ends
end start
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-12-19
data segment
count equ 10
buf db count dup(?)
max db ?
min db ?
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov si,0
mov cx,count
dec cx
mov al,buf[si]
mov max,al
mov min,al
next:
inc si
mov al,buf[si]
cmp al,max
jna bdy
mov max,al
jnz next1
bdy:
cmp al,min
jnb next1
mov min,al
next1:
loop next
mov ah,4ch
int 21h
code ends
end start
第2个回答  2007-12-18
只提供思路,至于输出什么的自己去搞。结束后cx里放最小,dx里放最大。

org 0x100
jmp start

section .bss
min resw 1
max resw 1

section .data
num dw 6,4,3,9,2,7,5,1,0,8
count equ $ - num

%imacro m2m 2
push %2
pop %1
%endmacro

section .text
start:
m2m word [min], word [num]
m2m word [max], word [num]

call minmax

mov ax, 0x4c00
int 0x21

minmax:
mov bx, num
mov si, 2

jmp .0

.0:
add si, 2
.1:
cmp si, count
jge .done
.2:
mov ax, word [bx+si]

cmp ax, word [min]
jge .3
mov word [min], ax
jmp .4
.3:
cmp ax, word [max]
jle .4
mov word [max], ax
.4:
jmp .0
.done:
mov cx, [min]
mov dx, [max]
ret

各位高手帮我解决一个汇编程序吧
(1)org是指定地址计数器的当前值,也就是说用org指定一个地址后,下面再分配的内存单元就是从指定位置开始。题目中指定了org 30H,那么下一个要分配的单元就是30H。而EQU是符号定义伪指令,它定义的符号就相当于C语言里的符号常量,并不占用存储空间。所以,S1的偏移地址就是30H。S1占用了8个单元...

汇编题目,求大家帮忙看一下,拜托了
(4) 两个无符号数相加,通过标志位___c___判断结果是否进位。(5) 指令"ADD BYTE PTR [EBX], BYTE PTR [BP]"的错误原因为___a___(6) 已知源操作数在数据段,语句“MOV AX,[BP+BX]存在语法错误,现改正为以下四种形式,但只有___c___是正确的。(7) 设VAR 为字变量, A为符号常量...

帮忙解决一个汇编期末编程问题!!!急啊!!!
手机版 我的知道 帮忙解决一个汇编期末编程问题!!!急啊!!! 30 从键盘输入X+Y=(X和Y为十六进制形式的补码,以H为后缀),将X和Y转换为十进制形式,计算两者之和,并以十进制形式显示之[例如:从键盘输入46H+C2H=,则显示:46H+C2H=70-62=8.注意:... 从键盘输入X+Y=(X和Y为十六进制形式的补码,以H为...

汇编题目,请高手帮忙
1、ARRAY是空间变量名,在语境下是数组的首地址,但是不是十四个字节,而是18个字节,9个字。DB定义字节,DW定义字(1字=2字节),DD定义双字。DW后的每一个十进制数都占用两个字节。2、ARYEND同ARRAY,也是空间变量名,在语境下是数组的首地址。?表示其空间内存放的是随机数。3、有一二可知,CX...

汇编语言程序设计问题帮忙解决下
MASM'的ASCII代码,10004H:53 |每个字符占用一个字节,分别为'M'、'A'、'S'、'M'。10005H:4D \/ 10006H:78 \\ 10007H:56 |地址10006H存放双字数据12345678H 10008H:34 | 10009H:12 \/ 数据的高字节存放在地址高的存储单元里,依此类推。整个数据的存储地址是数据的最低字节的存放地址。

请教一道简单的汇编语言题
试回答:(1) DA1+2字节单元的内容是( 'M' )。;;按顺序DA1+2字节单元比DA1往下走3个单元 (2) COUNT的值是( 12 )。伪指令语句语句“COUNT EQU $-DA1”在逻辑数据段内不会分配地址的,其作用在汇编时,用$-DA1(即12)替换指令中的COUNT符号。'M' 为字符M的ASCII编码...

用汇编语言,求大神帮忙
[SI] CMP AL,BYTE PTR MAXCHAR JLE @MAIN1 MOV BYTE PTR MAXCHAR,AL @MAIN1: INC SI LOOP @MAIN0 MOV AH,2 MOV DL,13 INT 21H MOV DL,10

几个汇编语言问题.高手帮忙解答下..
DL,CF;有错,CF不能出现在指令的操作数中 20.MOV AL,300 ;有错,300超出字节表示范围 21.JDXZ NEXT ;有错,无JDXZ指令 假设数据定义如下:S1 DB 'GOOD MORNING'S2 DB 30 DUP('')用串指令编写程序段分别完成以下功能:1.从左到右把S1中的字符串传送到S2.LEA SI,S1 LEA DI,S2 MOV ...

一道汇编语言程序的题,请懂的朋友帮忙!
; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。Code Segment Assume CS:Code,DS:Code VAL db ?Press_Key db 13,10,13,10,'The complated. Press any key to exit...$'Start: push cs pop ds mov ah,1 int 21h mov cx,8 ;字节数据,8位 xo...

ARM汇编语言简单编程问题
1.用ARM汇编指令实现的C赋值语句:x=(a+b)-c,在进行运算之前,代码必须先把a、b、c的值装入到寄存器,运算结束后,还要把x的值存回存储器中。2用ARM汇编指令实现的C语句:z=(a<<2)|(b&15)。3在ARM汇编指令中实现下面条件转移语句:if(a...

相似回答