用汇编语言求10个数中奇数的最小值,请大神指点一下我的代码,如果错了,帮我改正一下。谢谢!

DATASEGMENTARMDB1,2,3,4,5,6,7,8,9,10COUNTEQU$-ARMMINDB?DATAENDSCODESEGMENTASSUMECS:CO... DATA SEGMENT
ARM DB 1,2,3,4,5,6,7,8,9,10
COUNT EQU $-ARM
MIN DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET ARM
MOV CL,COUNT
MOV CH,0H
MOV MIN,9D
LOP: MOV AL,[SI]
INC SI
TEST AL,01H
JNZ LOP1
LOOP LOP
JMP LOP3
LOP1: CMP AL,MIN
JB LOP2
LOOP LOP
LOP2: MOV MIN,AL
LOOP LOP
LOP3: MOV AH,02H
INT 21H
CODE ENDS
END START
展开
 我来答
白雲深處是我家
推荐于2016-01-21 · TA获得超过381个赞
知道小有建树答主
回答量:203
采纳率:66%
帮助的人:233万
展开全部
DATA   SEGMENT
ARM    DB 1,2,3,4,5,6,7,8,9,10
COUNT  EQU $-ARM
MIN    DB ? ;不能用中文字符
DATA   ENDS
CODE   SEGMENT 
       ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
       MOV DS,AX
       MOV SI,OFFSET ARM
       MOV CL,COUNT
       MOV CH,0H
       MOV MIN,9D  ;这个数应该改得大一些
  LOP: MOV AL,[SI]
       INC SI
       TEST AL,01H
       JNZ LOP1
       LOOP LOP     ;1.这种代码比较混乱
       JMP LOP3
 LOP1: CMP AL,MIN
       JB LOP2
       LOOP LOP    ;2.这种代码比较混乱
 LOP2: MOV MIN,AL
       LOOP LOP    ;3.这种代码比较混乱
 LOP3: 
      mov dl,min  ;需要把输出的字符放在dl中,
      add dl,30h  ;转换为ASCII码值,这种输出只能输出0-9的数,
      MOV AH,02H  ;超过10的,需要使用其它方法
       INT 21H

      mov ah,4ch  ;需要加上退出代码
      int 21h
CODE ENDS
     END START
下面是我回答别人时写的。
Assume cs:code, ds:data

data segment
  dat db 12,110,130,14,82,12,56,72
    cnt equ $-dat
    m   db 127
    c   db 0
    s   db 'The minimum number is :$'
    s1  db 'No odd number found.$'
data ends

code segment
start:
        mov ax, data
        mov ds, ax

    mov si,0
        mov cx, cnt
L1:
        mov al,dat[si]
        test al, 1
        jz L2    ;even number, next
        inc c
        cmp al,m
        ja L2
        mov m, al
L2:
    inc si
        loop L1

        cmp c, 0
        jNz Found

        lea dx,s1
        mov ah,9
        int 21h
        jmp exit

Found:
        lea dx, s
        mov ah,9
        int 21h

        mov al, m
        xor ah,ah
        call print
exit:
        mov ah,4ch
        int 21h

print proc near
        mov bx,10
        xor cx,cx
Q0:
        xor dx,dx
        div bx
        or dx,0e30h
        push dx
        inc cx
        cmp ax,0
        jnz Q0
Q1:
        pop ax
        int 10h
        loop Q1
        ret
print endp
code ends
end start

啊!!!,不好意思,才发现上一次回答得也是你的提问。
来自:求助得到的回答
做而论道
高能答主

2015-06-04 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
DATA SEGMENT
; ARM DB 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
ARM DB 87, 62, 14, 33, 65, 82, 8, 9, 71, 55
COUNT EQU $ - ARM
MIN DB 255
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV SI, OFFSET ARM
MOV CX, COUNT
MOV MIN, 255
LOP:
MOV AL,[SI]
INC SI
TEST AL,01H
JZ LOP1 ;偶数则转移
CMP AL, MIN
JNB LOP1
MOV MIN, AL
LOP1:
LOOP LOP

MOV AL, MIN
MOV AH, 0
MOV BL, 100
DIV BL
MOV DL, AL
ADD DL, '0'
PUSH AX
MOV AH, 02H ;显示百位
INT 21H
POP AX

MOV AL, AH
MOV AH, 0
MOV BL, 10
DIV BL
MOV DL, AL
ADD DL, '0'
PUSH AX
MOV AH, 02H
INT 21H ;显示十位
POP AX
EXIT:
MOV DL, AH
ADD DL, '0'
MOV AH, 02H ;显示个位
INT 21H

MOV AH, 4CH
INT 21H
CODE ENDS
END START
更多追问追答
追问
我的电脑上不能运行汇编程序。能不能帮我测试一下结果,告诉我。如果有错误,能不能改正一下。谢谢。我的电脑提示无法运行MASM
追答
呵呵,你无法运行MASM,你怎么判断谁的答案正确?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式