Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
06/30/05 05:30
Modified:
  06/30/05 05:34

Read: times


 
#96269 - Old SDCC (ver ??) vs New SDCC (ver 2.50)
Responding to: ???'s previous message
Hello Frieder,

Below are two disassembled listing (D51.EXE tks Jeff) of the same
program Klaum.c

The older version destroys the PSW register with MOV PSW,#0
instruction. The new version of SDCC does not modify the PSW
register. It would be best to avoid using the flags in the PSW
register since historically it gets wiped out with older version of
SDCC and Keil.

Regards,

Charles Bannister
8051 Disassembly of klaum1.hex compiled with older version of SDCC
	org	0
reset1: ljmp	X008c		; 0000   02 00 8c   
	reti			; 0003   32         
	org	0bh
	ljmp	X0031		; 000b   02 00 31	; timer 0   
	org	13h
	reti			; 0013   32         
	org	1bh
	reti			; 001b   32         
	org	23h
	reti			; 0023   32         
	org	2bh
	reti			; 002b   32         
X002c:	lcall	X006b		; 002c   12 00 6b	; initalize mpu	   
X002f:	sjmp	X002f		; 002f   80 fe      
X0031:	push	acc		; 0031   c0 e0		; timer 0 isr      
	push	b		; 0033   c0 f0          ; save acc, b, dpl, dph, psw
	push	dpl		; 0035   c0 82      
	push	dph		; 0037   c0 83      
	push	psw		; 0039   c0 d0		      
	mov	psw,#0		; 003b   75 d0 00	; clear psw (big problem here)   
	mov	a,rb1r0		; 003e   e5 08      
	jz	X0044		; 0040   60 02      
	sjmp	X0053		; 0042   80 0f      
X0044:	mov	rb1r0,#1	; 0044   75 08 01   
	clr	p1.0		; 0047   c2 90      
	mov	th0,#0fah	; 0049   75 8c fa   
	mov	tl0,#0f5h	; 004c   75 8a f5   
	clr	tf0		; 004f   c2 8d      
	sjmp	X0060		; 0051   80 0d      
X0053:	mov	rb1r0,#0	; 0053   75 08 00   
	setb	p1.0		; 0056   d2 90      
	mov	th0,#0c3h	; 0058   75 8c c3   
	mov	tl0,#94h	; 005b   75 8a 94   
	clr	tf0		; 005e   c2 8d      
X0060:	pop	psw		; 0060   d0 d0      
	pop	dph		; 0062   d0 83      
	pop	dpl		; 0064   d0 82      
	pop	b		; 0066   d0 f0      
	pop	acc		; 0068   d0 e0      
	reti			; 006a   32         
X006b:	setb	ea		; 006b   d2 af      
	setb	et0		; 006d   d2 a9      
	clr	tr0		; 006f   c2 8c      
	clr	tf0		; 0071   c2 8d      
	anl	tmod,#0f0h	; 0073   53 89 f0   
	orl	tmod,#1		; 0076   43 89 01   
	mov	th0,#0c3h	; 0079   75 8c c3   
	mov	tl0,#94h	; 007c   75 8a 94   
	setb	f0		; 007f   d2 d5      
	clr	p1.0		; 0081   c2 90      
	setb	tr0		; 0083   d2 8c      
X0085:	sjmp	X0085		; 0085   80 fe      
	ret			; 0087   22         
X0088:	mov	dpl,#0		; 0088   75 82 00   
	ret			; 008b   22         
X008c:	mov	sp,#8		; 008c   75 81 08   
	lcall	X0088		; 008f   12 00 88   
	mov	a,dpl		; 0092   e5 82      
	jz	X0099		; 0094   60 03      
	ljmp	X002c		; 0096   02 00 2c   
X0099:	mov	r1,#0		; 0099   79 00      
	mov	a,r1		; 009b   e9         
	orl	a,#0		; 009c   44 00      
	jz	X00bb		; 009e   60 1b      
	mov	r2,#0		; 00a0   7a 00      
	mov	dptr,#X00d4	; 00a2   90 00 d4   
	mov	r0,#0		; 00a5   78 00      
	mov	p2,#0		; 00a7   75 a0 00   
X00aa:	clr	a		; 00aa   e4         
	movc	a,@a+dptr	; 00ab   93         
	movx	@r0,a		; 00ac   f2         
	inc	dptr		; 00ad   a3         
	inc	r0		; 00ae   08         
	cjne	r0,#0,X00b4	; 00af   b8 00 02   
	inc	p2		; 00b2   05 a0      
X00b4:	djnz	r1,X00aa	; 00b4   d9 f4      
	djnz	r2,X00aa	; 00b6   da f2      
	mov	p2,#0ffh	; 00b8   75 a0 ff   
X00bb:	mov	r0,#0		; 00bb   78 00      
	mov	a,r0		; 00bd   e8         
	orl	a,#0		; 00be   44 00      
	jz	X00ce		; 00c0   60 0c      
	mov	r1,#0		; 00c2   79 00      
	mov	dptr,#X0000	; 00c4   90 00 00   
	clr	a		; 00c7   e4         
X00c8:	movx	@dptr,a		; 00c8   f0         
	inc	dptr		; 00c9   a3         
	djnz	r0,X00c8	; 00ca   d8 fc      
	djnz	r1,X00c8	; 00cc   d9 fa      
X00ce:	mov	@r0,a		; 00ce   f6         
	djnz	r0,X00ce	; 00cf   d8 fd      
	ljmp	X002c		; 00d1   02 00 2c   

X00d4	equ	0d4h
	end
===============================================================
8051 Disassembly of klaum1.hex compiled with SDCC ver 2.5.0
	org	0
X0000:	ljmp	X005c		; 0000   02 00 5c	; reset   
	reti			; 0003   32         
	org	0bh
	ljmp	X0013		; 000b   02 00 13	; timer 0 isr start
X000e:	lcall	X003a		; 000e   12 00 3a   
X0011:	sjmp	X0011		; 0011   80 fe      
X0013:	push	acc		; 0013   c0 e0		; save acc      
	mov	a,rb1r0		; 0015   e5 08      
	jz	X001b		; 0017   60 02      
	sjmp	X002a		; 0019   80 0f      
X001b:	mov	rb1r0,#1	; 001b   75 08 01   
	clr	p1.0		; 001e   c2 90      
	mov	th0,#0fah	; 0020   75 8c fa   
	mov	tl0,#0f5h	; 0023   75 8a f5   
	clr	tf0		; 0026   c2 8d      
	sjmp	X0037		; 0028   80 0d      
X002a:	mov	rb1r0,#0	; 002a   75 08 00   
	setb	p1.0		; 002d   d2 90      
	mov	th0,#0c3h	; 002f   75 8c c3   
	mov	tl0,#94h	; 0032   75 8a 94   
	clr	tf0		; 0035   c2 8d      
X0037:	pop	acc		; 0037   d0 e0		; restore acc      
	reti			; 0039   32		; timer 0 isr end         
X003a:	setb	ea		; 003a   d2 af      
	setb	et0		; 003c   d2 a9      
	clr	tr0		; 003e   c2 8c      
	clr	tf0		; 0040   c2 8d      
	anl	tmod,#0f0h	; 0042   53 89 f0   
	orl	tmod,#1		; 0045   43 89 01   
	mov	th0,#0c3h	; 0048   75 8c c3   
	mov	tl0,#94h	; 004b   75 8a 94   
	mov	rb1r0,#1	; 004e   75 08 01   
	clr	p1.0		; 0051   c2 90      
	setb	tr0		; 0053   d2 8c      
X0055:	sjmp	X0055		; 0055   80 fe      
	ret			; 0057   22         
X0058:	mov	dpl,#0		; 0058   75 82 00   
	ret			; 005b   22         
X005c:	mov	sp,#8		; 005c   75 81 08  	start of main program 
	lcall	X0058		; 005f   12 00 58   
	mov	a,dpl		; 0062   e5 82      
	jz	X0069		; 0064   60 03      
	ljmp	X000e		; 0066   02 00 0e   
X0069:	mov	r1,#0		; 0069   79 00      
	mov	a,r1		; 006b   e9         
	orl	a,#0		; 006c   44 00      
	jz	X008b		; 006e   60 1b      
	mov	r2,#0		; 0070   7a 00      
	mov	dptr,#X00b8	; 0072   90 00 b8   
	mov	r0,#0		; 0075   78 00      
	mov	p2,#0		; 0077   75 a0 00   
X007a:	clr	a		; 007a   e4         
	movc	a,@a+dptr	; 007b   93         
	movx	@r0,a		; 007c   f2         
	inc	dptr		; 007d   a3         
	inc	r0		; 007e   08         
	cjne	r0,#0,X0084	; 007f   b8 00 02   
	inc	p2		; 0082   05 a0      
X0084:	djnz	r1,X007a	; 0084   d9 f4      
	djnz	r2,X007a	; 0086   da f2      
	mov	p2,#0ffh	; 0088   75 a0 ff   
X008b:	clr	a		; 008b   e4         
	mov	r0,#0ffh	; 008c   78 ff      
X008e:	mov	@r0,a		; 008e   f6         
	djnz	r0,X008e	; 008f   d8 fd      
	mov	r0,#0		; 0091   78 00      
	mov	a,r0		; 0093   e8         
	orl	a,#0		; 0094   44 00      
	jz	X00a2		; 0096   60 0a      
	mov	r1,#0		; 0098   79 00      
	mov	p2,#0		; 009a   75 a0 00   
	clr	a		; 009d   e4         
X009e:	movx	@r1,a		; 009e   f3         
	inc	r1		; 009f   09         
	djnz	r0,X009e	; 00a0   d8 fc      
X00a2:	mov	r0,#0		; 00a2   78 00      
	mov	a,r0		; 00a4   e8         
	orl	a,#0		; 00a5   44 00      
	jz	X00b5		; 00a7   60 0c      
	mov	r1,#0		; 00a9   79 00      
	mov	dptr,#X0000	; 00ab   90 00 00   
	clr	a		; 00ae   e4         
X00af:	movx	@dptr,a		; 00af   f0         
	inc	dptr		; 00b0   a3         
	djnz	r0,X00af	; 00b1   d8 fc      
	djnz	r1,X00af	; 00b3   d9 fa      
X00b8	equ	0b8h
	end



List of 30 messages in thread
TopicAuthorDate
General Pulse Width Modulation on 8051            01/01/70 00:00      
   The logic seems good            01/01/70 00:00      
      How to post code            01/01/70 00:00      
      Code I'm using            01/01/70 00:00      
         Problem lies with SDCC and PSW handling.            01/01/70 00:00      
            similar "issue" with Keil?            01/01/70 00:00      
            PSW not touched in recent version            01/01/70 00:00      
               Old SDCC (ver ??) vs New SDCC (ver 2.50)            01/01/70 00:00      
                  strange            01/01/70 00:00      
                     not strange, sorry            01/01/70 00:00      
                        Still no good            01/01/70 00:00      
                           Still not strange            01/01/70 00:00      
   Alternative method            01/01/70 00:00      
   65536, not 65535            01/01/70 00:00      
      Caught that errror            01/01/70 00:00      
         why not use the PCA, it is made for this            01/01/70 00:00      
            No PCA available            01/01/70 00:00      
               slim PICkins            01/01/70 00:00      
               go ahead, spend $7            01/01/70 00:00      
                  Why not read 8051 stuff?            01/01/70 00:00      
                     Excellent - Thanks            01/01/70 00:00      
                  Atmel Flip            01/01/70 00:00      
                     MAX232(equivalent)            01/01/70 00:00      
                        Another Option            01/01/70 00:00      
                     level convertor            01/01/70 00:00      
                        aka "Transceiver"            01/01/70 00:00      
         JSIM.EXE is all you need and it FREE.            01/01/70 00:00      
   Still not strange            01/01/70 00:00      
   Follow Up to the original post            01/01/70 00:00      
      Dumb and dumberrer            01/01/70 00:00      

Back to Subject List