网站百度提交入口:(跪求!!)汇编菜鸟求救
希望高人帮我改改吧!!
最好还能注释一下,谢谢!!
data segment
count dw 5
buf dw -1,0,2.5,4,5 dup(?)
max dw ?
min dw ?
data ends
stack segment
db 128 dup(?)
stack ends
code segement
assume cs:code,ds:data,ss:stack
start:mov ax,data
mov ds,ax
mov cx,count
push ds
mov ax,0
push ax
action2:mov SI,offset buf
mov ax,[SI]
cmp ax,[SI+2]
jl action1
mov max,[SI]
mov min,[SI+2]
mov SI,SI+2
loop action2
action1:mov max,[SI+2]
mov min,[SI]
mov SI,SI+2
dec cx
jmp action2
code ends
end start
加我的qq,我来告诉你.
9028826
你的代码过于混乱,没有格式,有许多错误, 而且思路
非常不清晰, 没有什么改的意义, 所以我写了一个跟你
的功能一样的程序,你按我的思路看看吧.
里面有些函数是我自己写的LIB, 你不必清楚他们的功能,只看两条--------------------------------------中的代码就可以了, 实现都在这里面了:
.MODEL SMALL
.386
;外部引用
INCLUDE SYSTEM.INC;
INCLUDE CONVER.INC;
INCLUDE PRINT.INC;
;************************************* 堆栈段 *****************************************
.STACK 256
;************************************* 数据段 *****************************************
.DATA
BUF DW -1, 0, 2 ,4 ,5, 9999, -9, 1, 8, 2, 888, 98, '$';
MAX DW ?; 保存BUF中最大值
MIN DW ?; 保存BUF中最小值
;************************************* 代码段 *****************************************
.CODE
START:
;程序初始化
MOV AX, @DATA;
MOV DS, AX;
MOV ES, AX;
CALL INIT;
;代码处:
;-------------------------------------------------
;AX暂时保存BUF中最大值
;BX暂时保存BUF中最小值
MOV AX, [BUF]; 使AX得到BUF第一个值
MOV BX, AX; 使BX得到BUF第一个值
LEA SI, BUF + 2; 最先与BUF的第二个值进行比较
CYC: CMP [SI], WORD PTR '$'; 判断是否超出BUF范围
JZ CHECK_END; 如果是则结束比较
CMP AX, [SI]; 让AX与BUF中数值进行比较
JGE CHECK_MIN; 如果大于等于则条转到CHECK_MIN
MOV AX, [SI]; 如果AX小于BUF中当前值, 则取BUF当前值
CHECK_MIN: CMP BX, [SI]; 让BX与BUF中数值进行比较
JLE CHECK_SUB; 如果大于等于则条转到CHECK_END
MOV BX, [SI]; 如果BX小于BUF中当前值, 则取BUF当前值
CHECK_SUB: ADD SI, 2; SI加2使得SI指向BUF中下一个数值
JMP CYC; 条转到CYC继续进行比较
CHECK_END: MOV MAX, AX; 向MAX装入最大值
MOV MIN, BX; 向MIN装入最大值
;-------------------------------------------------
;返回DOS
END0: CALL EXIT;
;************************************** 程序结束 *********************************************
END START
以后写代码最好保持一种良好的风格,这对阅读代码很有
帮助;
主要是这句代码导致的错误:code segement
多了个字母e。
我不太懂!不过希望你能懂!
希望你能懂!
是什么语言》?