The jumping could be caused by a number of things not being totally in time with each other and it may take a combination of solutions to get the result you want.
First step is probably to make sure your movements are smooth between frames by switching to a time based method.
There are many examples around and Baxslash has done an excellent article on the basics in one of the newsletters.
Short version is to use the time taken to render the last frame as a basis for the amount moved in the current frame. That way if the frame rate drops for any reason, the movement stays fluid.
To implement timed movement, you multiply the distance you want to move in one second by getFrameTime(), which will give you the distance per frame.
Currently you move at 8 pixels per frame, which (at 60 fps) is 480 pixels per second.
Applying that to your code gives;
Setvirtualresolution (480,853)
loadimage(1,"L_ledge_left.png")
createsprite (1,1)
setspriteposition (1,10,853)
iYPos as integer
iYPos = 853
iYMoveAmt as integer
iYMoveAmt = 480
do
iYPos = iYPos - iYMoveAmt * getFrameTime()
if iYPos < 0
iYPos = 853
endif
setspriteposition (1,10,iYPos)
Sync()
loop
Give it a try and see if there is any improvement.
Converting to floats will smooth out the movement further as it will be able to move partial pixels.