질문을 공식화하는 방법을 모르지만 최근에 어셈블리 학습을 시작했으며 바이트/단어 및 최종 결과 문자열로 작업하는 지점까지 도달했습니다. 뿐만 아니라 바이트/단어의 문자열이 될 것입니다 ... 내 질문은 어떻게 내 프로그램이 올바른 결과를 반환했는지 확인합니까? 어떤 방법이 있습니까? 방금 다음과 같은 문제가 해결되었습니다. 문자열 S : 1, 2, 3, 4, 5, 6이 있고 각 요소가 연속 된 두 바이트의 합계를 나타내는 문자열 D를 작성해야합니다. S의 D : 3, 5, 7, 9, 11 올바른 결과를 얻었는지 어떻게 확인합니까?문자열을 사용한 어셈블리 작업 결과 검사
0
A
답변
0
손으로 쓰는 어셈블리 구현의 정확성을 확인하려면 (정말 좋은 생각입니다) 다른 언어로 해당 프로그램을 작성할 수 있습니다. 두 프로그램에 동일한 입력을 제공하고 각 출력을 파일로 파이프 한 다음 파일에 diff
- 유틸리티를 실행하십시오.
실행을 통해 프로그램을 추적하려는 경우 디버거에서 프로그램을 실행할 수 있습니다. 고급 소스 코드가있는 디버거의 편의 시설은 없지만 디버거에서 레지스터 내용과 메모리를 표시 할 수 있어야합니다. gdb
에서 i(nfo) reg(isters)
을 사용하여 레지스터 상태를 표시 할 수 있습니다.
+0
이것은 좋은 생각처럼 들리지만, 아직 파일을 사용하는 방법과 정보 xD를 출력하는 방법을 배웠습니다. – Katie44
0
결과를 확인하는 간단한 솔루션은 어셈블리 언어에 반드시 특정되지 않은 질문 문자열
lea si, d
mov cx, 4 ;replace size with the amount of elements in D; mustn't be zero
new_row:
push cx
mov al, 10
int 29h
mov al, 13
int 29h
lodsb
or al, al
jz e
mov cx, ax
xor ch, ch
mov al, 46 ;the character shown as many times as specified in the string (here: a dot .)
next_char:
int 29h ;the advantage of this function is, the output always shown at the screen, it cannot be pipelined.
loop next_char
e:
pop cx
loop new_row
exit:
mov al, 10
int 29h
mov al, 13
int 29h
관련 문제
- 1. PHP 문자열을 사용한 작업 + 알 수없는 등호를 반환하는 결과?
- 2. Jquery를 사용한 작업 양식 유효성 검사
- 3. 등록 무료 COM/.NET Interop을 사용한 .NET 어셈블리 검사
- 4. memcopy를 사용한 이상한 결과
- 5. 메이븐 어셈블리 결과 테스트
- 6. C# 어셈블리 삽입 검사
- 7. addOperationWithBlock을 사용한 작업 순서
- 8. 어셈블리 : Ja를 사용한 레지스터 비교
- 9. PowerShell의 텍스트 파일에있는 문자열을 사용한 gci의 결과 fliter
- 10. 단위 테스트 ASP.Net MVC Server.UrlDecode 호출을 사용한 작업 결과
- 11. ActiveRecord를 사용한 질의 결과
- 12. matchTemplate을 사용한 결과 해석
- 13. codeIgniter를 사용한 쿼리 결과
- 14. CGAffineTransform을 사용한 이상한 결과
- 15. FileInputStream을 사용한 다중 작업
- 16. primefaces를 사용한 조건부 검사
- 17. .NET Framework 어셈블리 유효성 검사
- 18. 결과 집합 유효성 검사
- 19. 유효성 검사 결과 얻기
- 20. 검사 빈 결과 집합
- 21. ADF 검사 결과
- 22. 문자열을 사용한 remove_copy 사용
- 23. 문자열을 사용한 파이썬 매핑
- 24. 서블릿 필터를 사용한 작업 로그
- 25. DataContext를 사용한 많은 작업
- 26. 데이터베이스를 사용한 작업 최적화
- 27. JQuery를 사용한 창 작업?
- 28. ToggleButton을 사용한 UiBinder 작업
- 29. 함수를 사용한 작업 calcOpticalFlowPyrLK
- 30. 임의의 정수를 사용한 작업
에 지정된 라인에 많은 문자를 표시하는 것입니다. 손으로 검증 할 수 있습니다 (너무 많은 가능성이있는 경우 작동하는지 자신이 확신 할 수있는 충분한 예제를 수행하십시오). 또는 결과를 읽고 검증하는 독립적 인 프로그램 (다른 언어로도 가능)을 작성하십시오. 이 특별한 경우 작은 샘플 크기로 손으로 직접 작업하는 것이 가장 빠른 방법입니다. – lurker
글쎄, 어셈블리는 저수준 언어이고 내가 아는 다른 것들과 매우 흡사하다고 말할 수는 없다. 나는 CPU (tasm, tlink, tdebug)를 통해 간단한 16 진수 결과를 확인하기 위해 사용 되었기 때문에 문자열 결과를 어떻게 든 체크 할 수 있다고 생각했다. – Katie44
OK, 네가 묻고있는 것이 조금 불분명하다. 정확히 무엇을 확인하려고합니까? 프로그램에서 값을 출력하면 시각적으로 값을 확인할 수 있습니다. – lurker