. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  一段很简单的程序,已经通过MASM编译,希望能把相关值显示出来,求助!  [待解决] 回复[ 6次 ]   点击[ 448次 ]  
vadulex
[帖 主]   [ 发表时间: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
masmaster
[第1楼]   [ 回复时间:2010-11-09 21:27 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
看的不是王爽老师的书!
guoqingshun123
[第2楼]   [ 回复时间:2010-11-19 11:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-11-18 22:02
这里是基础知识啊,这我新手一看就晕。发错分类了
xiahe147
[第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的内容放到堆栈段
     谁告诉我上面的都是什么寻址方式?
zaixuexi
[第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
goodxiaowan
[第5楼]   [ 回复时间:2010-12-09 18:06 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-23 12:24
有点晕!
somnuses
[第6楼]   [ 回复时间:2010-12-22 17:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-22 13:18
很晕
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved