当前位置: 代码迷 >> 汇编语言 >> 请高手赐教汇编解决思路
  详细解决方案

请高手赐教汇编解决思路

热度:533   发布时间:2013-02-26 00:00:00.0
请高手赐教汇编
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 AH,4CH
INT 21H
CODE ENDS
END START
编译 链接生成了obj和exe文件,但执行后没有结果

------解决方案--------------------------------------------------------
;-------------------------------------------------------;
;Show the AX value by Hex. ;
;Input : AX = Value to show ;
;Output : none ;
;-------------------------------------------------------;
ShowAXHex PROC NEAR
push ax
mov al, ah
call ShowALHex ;Show High Byte
pop ax ;Show Low Byte
ShowALHex::
push ax
shr al, 4
call ShowNibbleHex
pop ax
ShowNibbleHex::
and al, 0Fh
add al, 30h
cmp al, 3Ah
jc short @f ;0~9 (30h~39h)
add al, 7 ;A~F (41h~46h)
@@:
call BIOS_Display_Char
ret
ShowAXHex ENDP
;-------------------------------------------------------;
;Display a character to screen ;
;Input : ;
; AL = Character Code ;
;Output : ;
; none ;
;-------------------------------------------------------;
BIOS_Display_Char PROC NEAR PUBLIC
push ax
push bx
mov ah, 0Eh
mov bx, 000Fh
int 10h ;VBIOS write TTY
pop bx
pop ax
ret
BIOS_Display_Char ENDP
把上面的代码加到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
MOV AH, 09H
INT 21H
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
  相关解决方案