|
主题 : : 一段很简单的程序,已经通过MASM编译,希望能把相关值显示出来,求助! [待解决] |
回复[ 6次 ]
点击[ 448次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-11-09 21:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-09 20:25 |
如题,程序实现统计一组数据中大于零,等于零,小于零的个数并分别放在GREATZ,ZERO.LITTLEZ中。
现在想实现程序运行后可以在屏幕上显示出(DOS编译环境)这三个项及其数值,初学汇编,有些无从下手,希望高手指点!
万分感谢!
STACK SEGMENT STACK 'STACK'
DW 100H DUP(?)
TOP LABEL WORD
STACK ENDS
DATA SEGMENT
BUFFER DW 5
DB 01H,06H,16H,0,12H
GREATZ DW ?
ZERO DW ?
LITTLEZ DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
XOR AX,AX
MOV GREATZ,AX
MOV ZERO,AX
MOV LITTLEZ,AX
MOV CX,BUFFER
LEA SI,BUFFER+1
ST_COUNT:
MOV AX,[SI]
ADD SI,2
AND AX,AX
JLE COUNT1
INC GREATZ
JMP COUNT3
COUNT1:
JL COUNT2
INC ZERO
JMP COUNT3
COUNT2:
INC LITTLEZ
COUNT3:
DEC CX
JNZ ST_COUNT
MOV AH,4CH
INT 21H
CODE ENDS
END START | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-11-09 21:27 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
|
|
|
|
|
[第2楼]
[ 回复时间:2010-11-19 11:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2010-11-18 22:02 |
|
|
|
|
|
[第3楼]
[ 回复时间:2010-11-27 18:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-30 21:46 |
MOV AX,DATA
MOV DS,AX 将AX的内容放到数据段
MOV ES,AX 将AX的内容放到附加段
MOV AX,STACK 将STACK放到AX
MOV SS,AX 将AX的内容放到堆栈段
谁告诉我上面的都是什么寻址方式? | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-11-29 16:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:93
信誉值:0
注册日期:2010-11-29 14:28 |
code segment
assume cs:code
main proc far
start:
xor ax,ax
push ds
push ax
mov si,offset cs:va_array
mov di,va_len
push di
push si
call CalcuNum
mov si,offset cs:greatz
mov di,offset cs:littlez - offset cs:greatz + 1
push di
push si
call ShowInfo
ret
main endp
va_array db 01h,-125,-6h,0h,12h
va_len equ $-va_array
greatz db 0
zero db 0
littlez db 0
CalcuNum proc near
push bp
mov bp,sp
mov bx,[bp+4]
mov cx,[bp+6]
xor si,si
inloop:
mov dl,byte ptr cs:[bx+si]
test dl,80h
je positive
negative:
add al,1
jmp short next
positive:
cmp dl,0
je short next
add ah,1
next:
inc si
cmp si,cx
jge exit
jmp short inloop
exit:
mov cs:greatz,ah
mov cs:littlez,al
add ah,al
sub cl,ah
mov cs:zero,cl
pop bp
ret 4
CalcuNum endp
ShowInfo proc near
push bp
mov bp,sp
mov bx,[bp+4]
mov cx,[bp+6]
xor si,si
xor di,di
mov ax,0b800h
mov es,ax
show:
mov dx,2100h
add dl,byte ptr cs:[bx+si]
add dl,30h
mov word ptr es:[di+200h],dx
mov word ptr es:[di+202h],20h
inc si
add di,4
loop show
pop bp
ret 4
ShowInfo endp
code ends
end start | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-12-09 18:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-23 12:24 |
|
|
|
|
|
[第6楼]
[ 回复时间:2010-12-22 17:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-22 13:18 |
|
|