컨트롤러"어셈블러로

H

Hammer111

Guest
모두 안녕

우리 대학 작업이 작은 (에서 최대) 10 데이터를 메모리에 주소를 좀 50H에서 60H에 저장된에서 (숫자)를 정렬하는 코드를 만드는 것입니다.여기에 5 시간 동안 일하고 있었어요 성공하지 않았다.
난 로직 내 곁에 지시했지만 JP 항상 좋은 일을 생각합니다.

이게 라인에 의해 (라인) 내가 그랬어의 텍스트 표현입니다 :
그래서 51H에 51H에서 데이터를 로드할 점 등록 B 조 전 HL 50H 주소를 다음 주소로 50H에서 메모리에 데이터와 함께로드 축압기 등록, 내가 한 장 씩 증가 HL 등록로드됩니다.입고 국기를 재설정하십시오.AB는 regster 공제, HL 등록 그래서 포인트 감소 다시 50H 데이터와 (빼기 때문에 후에 덮어 등록 50H.Loaded 주소하지만 난 깃발을 들어 있어요), HL (51H) 증가
그런 다음
감탄이 어디에 내 프로그램, 라인 JP C가 MEM MEM 자리 플래그를 가지고있을 때 점프해야 1로 설정하지만, 그것은 항상 나를 위해 죽으면 점프입니다 (와 상관없이 국기의) 느낌표
MEM에서 :
로드할 레지스터에서 데이터와 함께, HL (50H)와 B 레지스터로드 50H 감소 51H 주소

MEM 기본적으로 적어도 난 50H에서 51H로 데이터를 전환하고 51H에서 50H 빼기 때문에 플래그를 수행했다.
다시 말하지만, 내 문제 여부를 빼기 긍정적 또는 부정적이다 (깃발 전 MEM을 실행 subprogram가 1 또는 0)으로 설정 수행.

코드 :

의 LD HL, 50H
의 LD (HL)
INC HL
의 LD B 조 (HL)

SBC는 A와 B
12월 HL
의 LD (HL)
INC HL
JP C를 MEM
MEM :
의 LD (HL),
12월 HL
의 LD (HL), B 조
HALT


 
다음과 같은 순서를 사용할 수없습니다 :
코드 :

JP C를 MEM

MEM :
 
정렬 데이터를 위해, 당신은 반복해야합니다.하지만 당신의 프로그램에 이미 아이오와 안 루프!

시도 간단한 분류 메도 배우 - 버블 정렬 알고리즘.

 
IANP 고맙 아주 많이 일하죠

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" />
이것은 그것을 정렬위한 완벽한 프로그램이 아니라 프로그램의 시작에 불과합니다.
그때 내가 처음 그들을 비교하고 메모리로 누른 다음 데이터를로드 중입니다 정렬 그들을 넣어 이전 2 appropirate 위치에 그것을 보내는 그들을 비교 2 데이터를로드하는 생각.
그런 가요 거품 정렬은 무엇입니까?

너희들 회신 고맙습니다!!

 
= 비교 10 숫자 "9 루프 ..

첫 번째 반복하면 많은 작은 숫자 줄 것이다 ..
두 번째 반복 (9 숫자)를 두 번째 숫자는 .. 작은 줄 것입니다 거래등등 ..
마지막으로 반복, 실제로, 당신은 주차장에있는 가장 큰 숫자 .. 줄 것입니다 겨우 2 숫자를 비교하는 것입니다

안부,
IanP

 
제가 프로그램을 메모리에 어떤 숫자를 10로 만든 작은 하나를 찾습니다.
내가 그것의 장소에 넣어 먼저 주소 (50H)과 첫 번째 숫자는 그 번호를 넣어.
내가 70H 주소는 그 10 숫자 중에서 가장 작은 숫자의 주소를 저장하는 데 사용

여기서 코드는 :

의 LD HL, 50H
의 LD 개발, 9
LOOP1 :
의 LD (HL)
INC HL
루프 :
의 LD B 조 (HL)
CP B 조
전화 노스캐롤라이나, FLAG0
외침 C를 flag1
12월 D 조
JR 전철 뉴질랜드, 루프
의 LD HL, 50H
의 LD C가 (HL)
의 LD HL, (70H)
의 LD (HL)는 C
의 LD HL, 50H
의 LD (HL),
HALT

FLAG0 :
의 LD, B 조
의 LD (70H), HL
INC HL
의 LD B 조 (HL)
RET

flag1 :
INC HL
의 LD B 조 (HL)
RET

다음 단계 마십시오 동일한 절차를 하긴했지만이 주소는 IT 작은 않으므로 난 안 그래 다시 검색에있을 원하는 50H 으니까 내가 반드시 첫 번째 숫자는 제외.
그 8 시작 주소를 반드시 51H 코드 (첫 번째 두 줄로)에 대한 두 번째 줄에 반드시 포인트 것을 의미합니다.

그게 문제 나도 모르겠다 어떻게 줄일 그들을 시작 코드는 AT 어디에 똑같은 주소로 첫번째에 IT 위에 얹어 두번째로 적은 종말이다.하지만 전 할 수있다 수동으로하지 유용합니다.

 
Hammer111 :
제발 하위 테스트 루틴을, 나는 그것을 시도하지 않은
코드 :

; 메모리 영역 50H 60h 때까지 (17 바이트)BubbleSort :

의 LD 드, 0050h

스캔 :

의 LD, (DE)의

밀어 드

POP를 HL

INC HL, HL = 드 1

차트 비교 :

의 LD B 조 (HL)

CP, B 조; = "B 조

JR 전철 노스캐롤라이나, NoSwap; 그래, 스왑 않아

의 LD C가 B 조

의 LD B 조,

의 LD는 C; 스왑 : B 조

의 LD (드), 대부분의 위치가 상단에 저장

NoSwap :

INC HL; 다음 바이트 비교

의 LD, 61h

CP, 패, 배열의 끝?

JR 전철 뉴질랜드, 비교, 아직은, 다음과 비교INC 드; 다음으로 가장 상단의 위치를

의 LD, 60h

CP, 이메일, 스캔 끝?

JR 전철 뉴질랜드, 스캔, 아직은, 다음 검색

RET
 
Acumulator 귀하의 코드에서 주소 61H와 함께 붙어있습니다.

어느 날 도와준 일부 라인을 사용하여 코드를했다.
유일한 방법은 내가 마지막 줄에 (JR 전철 루프)에서 루프를 중단해야할지 모르겠다, 난 그 때 5AH 주소에 도달하면 중지하려면
난이 대신 JR 전철 루프 라인을내는 시도

의 LD, 5AH
CP 패
JR 전철 뉴질랜드 루프
몇 사이클 3 또는 4를 (을)를 다음 번호가 작동하지 않는다 (54H 주변 어딘가 중지

코드 :;로드 50H 주소의 LD 드, 50H루프 :의 LD, (DE)의

밀어 드

POP를 HL차트 비교 :INC HL

의 LD B 조 (HL)

CP B 조; "= b

전화 노스캐롤라이나, 스왑; 경우 = 0 스위치는 데이터를 가지고

의 LD C가

의 LD, 5AH

CP 패

의 LD는 C

전화 뉴질랜드 비교

JP SWAPNO스왑 :

밀어 HL

POP를 9

의 LD C가

의 LD, B 조

의 LD B 조는 C

RETSWAPNO :

밀어 드

POP를 HL

의 LD C가 (HL)

의 LD (드),

밀어 9

POP를 HL

의 LD 패, 반장님

의 LD H 조, 0

의 LD (HL)는 C

INC 드

JP 루프

HALT

 
인용구 :

Acumulator 귀하의 코드에서 주소 61H와 함께 붙어있습니다.
 
그래, 난 정말 죄송 합니다만, 왜 작품을 처음으로 작동하지 한건지 모르겠지만, 아마도 일부 이전 프로그램은 움직이지 않아요.

저는 미안 또 다시 완벽하게 감사 해요으로 작동

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" />질문 하나, 내가 그것을 5000H 주소로 채워집니다 9 레지스터에 50H 주소를 팝업 왜?

 
인용구 :

내가 그 5000H 주소로 채워집니다 9 레지스터에 50H 주소 팝업
 
주제를 벗어 :
만약 당신이 아마 당신이 후에 당신에게 숨 프로그래밍 ca를 찾을 수 어셈블리 쓴 무료 C 컴파일러 내가 생각을 zilog 마이크로 컨트롤러 제품군 학습에 관심이있을 것입니다 귀하의 Z8은 좋아

 
게시 Hammer111 처음 쓴 :
인용구 :

우리 대학 작업이 작은 (에서 최대) 10 데이터를 메모리에 주소를 좀 50H에서 60H에 저장된에서 (숫자)를 정렬하는 코드를 만드는 것입니다.
 
음, 그래, 그냥 대학 작업과 우리 zilog eZ80Acclaim 소프트웨어 일한다고 및 C 프로그래밍으로 전환 어제 였어요.

매우 많은 도움을 주셔서 감사합니다.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="아주 행복한" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top