读书人

请高手赐教汇编解决思路

发布时间: 2012-02-06 15:52:45 作者: rapoo

请高手赐教汇编
DATASEGMENT
SUMDW 0
DATAENDS

STACKSEGMENT STACK
DB 200 DUP(0)
STACKENDS

CODESEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
START:MOV AX,DATA
MOV DS,AX
MOV CX,50
MOV AX,0
MOV BX,1
NEXT:ADD AX,BX
INC BX
INC BX
DEC CX
JNE NEXT
MOV SUM,AX
MOV AH,4CH
INT 21H
CODEENDS
END START
编译 链接生成了obj和exe文件,但执行后没有结果

[解决办法]
;-------------------------------------------------------;
;Show the AX value by Hex.;
;Input: AX = Value to show;
;Output : none;
;-------------------------------------------------------;
ShowAXHexPROCNEAR
pushax
moval, ah
callShowALHex;Show High Byte
popax;Show Low Byte
ShowALHex::
pushax
shral, 4
callShowNibbleHex
popax
ShowNibbleHex::
andal, 0Fh
addal, 30h
cmpal, 3Ah
jcshort @f;0~9 (30h~39h)
addal, 7;A~F (41h~46h)
@@:
callBIOS_Display_Char
ret
ShowAXHexENDP
;-------------------------------------------------------;
;Display a character to screen;
;Input:;
;AL = Character Code;
;Output :;
;none;
;-------------------------------------------------------;
BIOS_Display_CharPROCNEAR PUBLIC
pushax
pushbx
movah, 0Eh
movbx, 000Fh
int10h;VBIOS write TTY
popbx
popax
ret
BIOS_Display_CharENDP
把上面的代码加到End start前面;然后在MOV SUM,AX 后面加一句代码 call ShowAXHex就会有结果显示出来了
[解决办法]
能看到啊!--只不向屏幕输出罢了...

-u
0B70:0000 B8620B MOV AX,0B62
0B70:0003 8ED8 MOV DS,AX
0B70:0005 B93200 MOV CX,0032
0B70:0008 B80000 MOV AX,0000
0B70:000B BB0100 MOV BX,0001
0B70:000E 03C3 ADD AX,BX
0B70:0010 43 INC BX
0B70:0011 43 INC BX
0B70:0012 49 DEC CX
0B70:0013 75F9 JNZ 000E
0B70:0015 A30000 MOV [0000],AX
0B70:0018 B44C MOV AH,4C
0B70:001A CD21 INT 21
0B70:001C 91 XCHG CX,AX
0B70:001D 2E CS:
0B70:001E A14A91 MOV AX,[914A]
-g cs:18

AX=09C4 BX=0065 CX=0000 DX=0000 SP=00C8 BP=0000 SI=0000 DI=0000
DS=0B62 ES=0B52 SS=0B63 CS=0B70 IP=0018 NV UP EI PL ZR NA PE NC
0B70:0018 B44C MOV AH,4C
-d ds:0 3
0B62:0000 C4 09 00 00 ....
-

09C4H=2500D 啊

[解决办法]
DATA SEGMENT
SUM DW 0,'$'
DATA ENDS

STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS

CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
START: MOV AX,DATA
MOV DS,AX
MOV CX,50
MOV AX,0
MOV BX,1
NEXT: ADD AX,BX
INC BX
INC BX
DEC CX
JNE NEXT
MOV SUM,AX
MOVAH, 09H
INT21H
MOV AH,4CH
INT 21H
CODE ENDS
END START

[解决办法]
;求奇数和,这样就完整了。
DATA SEGMENT
SUM DW 0
DATA ENDS

STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS

CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
MOV CX,50
MOV AX,0
MOV BX,1
NEXT:
ADD AX,BX
INC BX
INC BX
DEC CX
JNE NEXT
MOV SUM,AX


mov si,ax
call show
mov ah,1
int 21h
MOV AH,4CH
INT 21H

show:
push cs
pop ds
mov dx,offset message
mov ah,9
int 21h
mov ax,si
xor cx,cx
mov bx,10
nx1:
mov dx,0
div bx
push dx
inc cx
cmp ax,0
jnz nx1
nx2:
pop ax
or al,30h
mov ah,0eh
int 10h
loop nx2
ret

message db 0dh,0ah,'1+3+5+7+...+99=$'

CODE ENDS
END START

读书人网 >汇编语言

热点推荐