어셈블리어 INT21H 4E , 4F 관련 해서 궁금한점 올립니다.

silver2145의 이미지

파일 검색 프로그램을 만들다가 경로를 조합해서 만들다 보면 점점 길어지게 됩니다. 예를들면
C:/A.TXT
C:/AS/A.TXT
C:/AS/B.TXT
C:/AS/BS/A.TXT
C:/AS/BS/B.TXT .....
이런식으로 점점 길어지게 됩니다.
계속 길어지다가 보니까
124자정도 이상되니까 에러를 토하며 검색이 안되었습니다.

이길이까지는 되었습니다만은
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/D- FIGH~1.KR/SAMSUN~1/NEOPLE/WEB_SE~1/WIDGET/MARKET~1.SWF/*.*

예를 들면 아래 경로처럼 길이가 길어지면 파일 인식을 못한다는 것이었지요
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/D- FIGH~1.KR/SAMSUN~1/NEOPLE/WEB_SE~1/WIDGET/MARKET~1.SWF/#DFNEX~1.COM/*.*

기본적으론 이런 명령어를 쓰지요.

MOV CX,3FH
MOV DX,OFFSET FILENAME
MOV AH,4EH
INT 21H

MOV DX,OFFSET FILENAME
MOV AH,4FH
INT 21H

물론 재귀적인 방식으로 디렉토리를 조합하면서 탐색을 하게됩니다만 기본은 저것에서 모든 응용이 됩니다.

C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/CNFHTT~1.KR/SE/H
TTP_F~1.SWF/*.*
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/CNFHTT~1.KR/SE/H
TTP_F~1.SWF/HTTPUD.SOL
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/COREMO~1.COM/*.*
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/COREMO~1.COM/COM
MOC~1.SOL
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/D-FIGH~1.KR/*.*
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/D-FIGH~1.KR/SAMS
UN~1/*.*
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/D-FIGH~1.KR/SAMS
UN~1/NEOPLE/*.*
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/D-FIGH~1.KR/SAMS
UN~1/NEOPLE/WEB_SE~1/*.*
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/D-FIGH~1.KR/SAMS
UN~1/NEOPLE/WEB_SE~1/WIDGET/*.*
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/D-FIGH~1.KR/SAMS
UN~1/NEOPLE/WEB_SE~1/WIDGET/MARKET~1.SWF/*.*
C:/DOCUME~1/YSSHIN/APPLIC~1/MACROM~1/FLASHP~1/#SHARE~1/3HDRQ4SC/D-FIGH~1.KR/SAMS
UN~1/NEOPLE/WEB_SE~1/WIDGET/MARKET~1.SWF/#DFNEX~1.COM/*.*
ERROR
2340

위 로그는 탐색하는 폴더접근했던 로그를 찍은건데요 그전길이까지는 성공했다는
뜻입니다. 에러는 제가 임의대로 찍은것이니.. 신경안쓰셔도 되구요 저지점에서 에러가
난다는거에 의의를 두시면 됩니다.

해서 제가 궁금한것을 요약하자면

INT 21H 4F나 4E인 경우 DS:DX 에 파일명을 주는데 서브디렉토리 포함 몇자까지 에러가 나지않고
넣을수 있을지.. 그리고 제약이 있다면 어떤문서를 참조해야 하는지 궁금합니다.
초보라서 자료 찾기가 쉽지가 않네요
도움좀 주세요 .. 하루종일 자료찾다가 지쳐서 올립니다.

저정도의 경로+파일이름 (물론 8.3 스탠다드폼접근)길이가 아닐시 모든 파일을 순차적으로 접근가능합니다.
해서... 저정도 길이 이상이라면 그냥 로직으로 패스시키고 다음 파일을 순회할지 아니면
이유를 알아내서 처리해줄지 고민하고 있습니다.

참고로 제가 쓰는 어셈은 MASM 6.11 입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.