回 帖 发 新 帖 刷新版面

主题:编写程序,求出首地址为DATA的10H字数组中最小偶数,并把它存放在变量Z中。

编写程序,求出首地址为DATA的10H字数组中最小偶数,并把它存放在变量Z中。
如果你是一个编程高手,原同你较量!!做此题!!!!!!!!
[em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2]

回复列表 (共9个回复)

沙发

注意:在数据存放中,高低位是相反的
偶不知道你所要求是的带符号数还是无符号数
这个是无符号的程序
stack segment para stack 'stack'
  db 256 dup(00)
stack ends
data1 segment para public 'data1'
   data dw 455dh,5448h,76a7h,6f72h,85ddh,0c964h,0f842h,0159h,2445h,4598h,35d4h,6484h,76f2h,62ach,5430h,8442h
   a dw 16,0,16 dup(0)
   z dw 0000h
data1 ends
code segment para public 'code'
assume cs:code,ds:data1
main proc far
   mov ax,data1
   mov ds,ax
   mov cl,10h
   mov ch,0
   lea bx,data
   lea si,a
k2:mov ax,[bx]
   shr ax,1
   jc k1
   mov ax,[bx]
   mov [si],ax
   add si,2
   inc ch
k1:add bx,2
   dec cl
   cmp cl,0
   jnz k2
   
   lea bx,a+2
   mov ax,a
   mov cl,ch
k4:cmp ax,[bx]
   jnc k3
   mov ax,[bx]
k3:add bx,2
   dec cl
   cmp cl,0
   jnz k4
   mov z,ax
   mov dl,ah
   mov ah,02h
   int 21h
   mov dl,al
   mov ah,02h
   int 21h
   mov ah,4ch
   int 21h
main endp
code ends
end main

板凳

DATA1    SEGMENT
DATA     DW 0210H,0F213H,0F23H,9108H,0002H,0,0FFFFH,0DE9H,
         DW 2309H,0F970H,3012H,48FEH,2598H,0FEEH,0213H,2048H
COUNT    DB ($-DATA)/2
Z        DW ?
DATA1    ENDS
CODE     SEGMENT
         ASSUME DS:DATA1,CS:CODE
START:   MOV  AX,DATA1
         MOV  DS,AX
         MOV  CX,COUNT
         LEA  SI,DATA
         MOV  BX,0FFFFH
LOOP1:   LODSW
         MOV  DX,AX(暂存到DX)
         SHR  AX,1(判断是否偶数)
         JNC  LOOP2(是偶数)
         LOOP LOOP1
         JMP  EXIT
LOOP2:   CMP  BX,DX(第一次与0FFFFH比较)
         JA   LOOP3
         LOOP LOOP1
         JMP  EXIT
LOOP3:   CMP  DX,0(排除0)
         JNE   LOOP4
         LOOP  LOOP1
         JMP  EXIT
LOOP4:   MOV  BX,DX
         LOOP LOOP1
EXIT:    MOV  Z,BX
         MOV  AH,4CH
         INT  21H
CODE     ENDS
         END  START
上机调试即可,我调试过。是无符号数。排除全部是奇数的可能,如果全是奇数,那麽BX的值不会变。

3 楼

这个好像是我 们期末的考试题啊!

4 楼

本人赞同楼上的楼上之意见!!

5 楼

支持楼上的说法的啊

6 楼

引用自2楼:

LOOP2:   CMP  BX,DX(第一次与0FFFFH比较)
         JA   LOOP3


请问这个语句是啥功能,我是菜鸟,呵呵

7 楼

DATA    SEGMENT

8 楼

DSEG   SEGMENT
       DATA    DW      1,3,4,5,6,6,8,2,4,10
       Z       DW      ?
       X       DB        2
DSEG   ENDS
CODE   SEGMENT
       ASSUME CS:CODE,DS:DSEG
START: MOV  AX,DATA
       MOV  DS,AX
       MOV  Z,1000
       MOV  CX,10
       LEA  BX,DATA
NEXT:  MOV  AX,[BX]  
       DIV X
       CMP  AH,0
       JE   A1
       ADD  BX,2
       JMP  LOOP1
A1:    CMP  AX,Z
       JL   A2
       ADD  BX,2
       JMP  LOOP1
A2:    MOV  Z,AX
       ADD  BX,2
LOOP1: LOOP  NEXT  
       MOV   AH,4CH
       INT   21H

9 楼

[quote]引用自2楼:<br>
<br>
LOOP2:&nbsp;&nbsp;&nbsp;CMP&nbsp;&nbsp;BX,DX(第一次与0FFFFH比较)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JA&nbsp;&nbsp;&nbsp;LOOP3<br>
<br>
<br>
请问这个语句是啥功能,我是菜鸟,呵呵[/quote]
这个语句要的是一个分支而已,也就是方便下面的程序编写.

我来回复

您尚未登录,请登录后再回复。点此登录或注册