2010-01-26 5 views
1

내 친구가 해결하려고하는 퍼즐의 일부로 8080 어셈블리 코드를 받았습니다.누구나이 8080 어셈블리 코드 '퍼즐'을 해결할 수 있습니까?

3E 02 
4F 
C6 04 
47 
11 41 01 
21 69 00 
19 
76 

그는 B, DE, C 및 HL

의 값

사람이이 문제를 해결하거나 실행하는 방법에 대한 올바른 방향으로 날 지점 수 이 필요합니다 : 이 코드인가?

업데이트

스포일러 : 용액을 보인다 = 02

C, B = 06, D = 01, E = 41, H = 01, L = AA 여기

+1

나는 각각 LD LD와 LD DE 명령어 인 21과 11 만 기억합니다. –

답변

3

는 8080 명령어 세트에 대한 안내입니다 : http://www.comsci.us/cpu/8080/isindex.html 귀하의 진수 목록이 명령 스트림과 같습니다; 거기에서 갈 수 있어야합니다. 얼마나 즐겁게 옛 학교!

행운을 비네.

0

실행하지 않아도됩니다. 번역 만하면됩니다. 테이블 8080 opcode like this, 10 분 작동하고 코드를 분해했을 것입니다. 그런 다음 답을 찾기 위해 정신적으로 시뮬레이션 할 수 있습니다.

1

이것으로 판단하면 가장 좋은 방법은 8080 에뮬레이터를 검색하여 에뮬레이터에 대해 실행하고 그 대답을 얻는 것입니다.

호프가 도움이 되었으면 안녕하세요, 탐.

+1

물론 "친구"가 수동으로, 수동으로이 작업을 수행해야하는 경우가 아니라면 나중에 어느 정도 시간이 걸릴 것입니다. =) –

+2

개인적으로 시험을 위해이 같은 것을 요구할 교수님을 비명 지을 것입니다. –

+0

@David : opcode를 암기하는 데는 행운을 빈다. :) :) 그게 예상된다면 너무 잔인 해 ... – t0mm13b

2

분해해야합니다.

즉, 16 진수 op 코드를 해당 니모닉으로 변환하십시오.

다음은 예 reference입니다.

3E가 "MVI A, d8"이므로 3E 02가 A 레지스터에 02 값을 넣는 것처럼 보입니다.

니모닉을 디코딩하면 실제로 의미하는 것을 찾아보고 프로그램을 파악할 수 있습니다.

손쉽게 할 수 있습니다.참고로

2

, 여기에 분해입니다 :

3E 02  mvi  a, 2  ; Move o1 <- immediate data 
4F   mov  c, a  ; Move o1 <- o2 
C6 04  adi  4  ; Add immediate to A 
47   mov  b, a  ; Move o1 <- o2 
11 41 01 lxi  d, 141h ; Load register pair with immediate data 
21 69 00 lxi  h, 69h ; Load register pair with immediate data 
19   dad  d  ; Add register pair to HL 
76   hlt    ; Halt 
0
3E 02  ;mvi a, 02h -- load A with 02h 
4F   ;mov c,a  -- move A into C (A remains 02h) 
C6 04  ;adi 04h  -- a = a + 04h (A now contains 06h) 
47   ;mov b,a  -- BC pair now contains 0602h 
11 41 01 ;lxi d, 0414h -- DE now contains 0141h 
21 69 00 ;lxi h, 0069h -- HL now contains 0069h 
19   ;dad d   -- HL = HL + DE 
76   ;hlt   -- halt processing 
0

전체 스포일러

0000h: 3e02   mvi a, 2h  ; A = 2
0002h: 4f   mov c, a  ; C = 2
0003h: c604   adi 4h   ; A = 6
0005h: 47   mov b, a  ; B = 6
0006h: 114101  lxi d, 141h ; DE = 0141h
0009h: 216900  lxi h, 069h ; HL = 69h
A = 6 1,515,
000ch: 19   dad d   ; HL = 69h + 141h = 1aah
000dh: 76   hlt
, B = 6, C = 2, D = 1, E = 41H, H = 1, = 0aah

8080 온라인 디스어셈블러 here L.
8080 온라인 명령어 세트 참조 here.