Лидеры рейтинга

ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

341

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Советник

283

Россия, Санкт-Петербург


ID: 400669

epimkin

Профессионал

254


ID: 137394

Megaloman

Мастер-Эксперт

122

Беларусь, Гомель


ID: 405239

al4293189

1-й класс

85


ID: 401888

puporev

Профессор

69

Россия, Пермский край


ID: 325460

CradleA

Мастер-Эксперт

65

Беларусь, Минск


8.9.8

01.08.2021

JS: 2.9.16
CSS: 4.5.14
jQuery: 3.6.0
DataForLocalStorage: 2021-08-03 10:16:01-standard


Создание программ на языке Assembler.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 201187

Раздел: Assembler
Автор вопроса: oligator.a.y (Посетитель)
Дата: 17.06.2021, 14:45 Консультация закрыта
Поступило ответов: 1

Здравствуйте! У меня возникли сложности с таким вопросом:
Необходимо модифицировать командный файл TASM.BAT таким образом, чтобы при отсутствии имени файла в командной строке осуществлялся ввод имени файла с клавиатуры. Предусмотреть также вывод на экран монитора содержимого файла листинга трансляции в постраничном режиме.

Последнее редактирование 17.06.2021, 15:59 Зенченко Константин Николаевич (Старший модератор)
Ответ # 281436 от Megaloman
Я далёк от ассемблера, но, ИМХО, задача скорее на автоматизацию процесса. По моему мнению, запускать командный файл с ручным набором имени файла - очень некомфортно. Если взять за основу, что работаем в Tasm (у меня 2 версия - не думаю, что это принципиально) из-под DosBox, то можно предложить, ИМХО, прекрасное простое и удобное решение: Norton Commander!

1. Настройка DosBox. В опциях надо смонтировать диск на Вашу папку с Tasm.exe и прописать запуск NortonCommander из папки, в которую мы его поставим
Код
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.

Mount D Z:\lang\tasm\tasm.2
D:
D:\Comander.5EN\NC.exe
rem Exit


2. Берём АНГЛИЙСКУЮ версию Norton Commander (далее NC) 5.5 версии, распаковаваем её, получаем 3 папки nc551en1 nc551en2 nc551en3, создадим временную папку рядом с Tasm.exe, например Disk и сливаем туда содержимое этих трёх папок.

3. Запускаем DosBox.
CD Disk
Install
Устанавливаем NC. При установке укажем путь установки, я указал D:\COMANDER.5EN
D: - потому, что мы смонтировали именно этот диск.
Настройка NC "под себя" труда не составляет, я остановлюсь только на важных для работы моментах.
После того, как установка завершится, можете уже из-под NC убить папку Disk

4. Рядом с Tasm.exe создадим, например, asm1.bat
Код
@Echo Off
cls

2>nul del %1.obj
2>nul del %1.exe
2>nul del %1.com
2>nul del %1.map

D:\tasm.exe %1.asm
D:\tlink.exe %1.obj/t 


5. Настроим NC для ассоциации файлов .asm c с обработкой посредством батника asm1.bat




В принципе, можно создать файл COMANDER.5EN\nc.ext и записать туда такую строку
Код
asm: D:\asm1.bat !


6. Я создал папочку _Asm.My, куда поместил тестовые файлы .asm.
Заходим нортоном в эту папочку, выбираем файл, с которым мы работаем, по F4 можем его корректировать (кстати, в настройках нортона можно прописать более продвинутый редактор, например, COMANDER.5EN\ncedit.exe или любой другой Dos-редактор.), по Enter запустить его на обработку.
Ctrl/O (это буква) позволит посмотреть, что творилось во время обработки
Выбирая файл листинга, по F3 его можно комфортно просматривать.

Всё! Единственное, предложил бы в настройке DosBox убрать rem перед Exit - если Вы завершите NC (F10), то завершится и DosBox
И, возможно, прописать для DosBox опцию запуска полноэкранного режима.
fullscreen=true
fulldouble=false

Альтернативное решение, громоздкое но тоже рабочее, было предложено в минифоруме.

Megaloman

Мастер-Эксперт
21.06.2021, 14:29
Мини-форум консультации # 201187

q_id

Megaloman

Мастер-Эксперт

ID: 137394

1

= общий =    17.06.2021, 15:34
oligator.a.y:

Цитата: oligator.a.y 

Необходимо модифицировать командный файл 

переименуйте Ваш bat- файл в .txt и прикрепите к сообщению: пустое место модифицировать невозможно.

=====
Нет времени на медленные танцы

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

2

= общий =    17.06.2021, 15:57
oligator.a.y:

TASM какой?

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

3

= общий =    17.06.2021, 15:59
oligator.a.y:

Я забираю Ваш вопрос в Ассемблер

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

q_id

Алексеев Владимир Николаевич

Мастер-Эксперт

ID: 259041

4

= общий =    17.06.2021, 15:59
oligator.a.y:

Вы что-то путаете или не знаете, что такое Файл?
Файл - это именованное место на Жёстком диске (или на флэшке, дискете, др носителе).
ОперСистема запрещает создавать файл БЕЗ имени. Таким образом, у Вас не может быть файла БЕЗ имени.

Вероятно, Вы создали какой-то текст или код, и при попытке сохранить его в файл на диске у Вас бывают ошибки, связанные с отсутствием имени или запретом задания имени, кот-е уже существует в родитель-папке?
Опишите подробнее свою задачу.
По-моему, Вы ошиблись адресом. Тема Вашей консультации - НЕ Windows , а вероятно программирование в Cmd / VBS или ASM .

q_id

Megaloman

Мастер-Эксперт

ID: 137394

5

= общий =    18.06.2021, 11:14
oligator.a.y:

Я получил в личное сообщение Ваш файл Tasm.txt. Я не увидел в нём ничего личного/конфиденциального, тем более, что он вызвал у меня недоумение:

Код
start "" C:\Windows\System32\cmd.exe
Насколько я понял - tasm.bat не есть нечто стандартное в поставке Tasm. Я нашел нечто подобное, однако, чтобы решить Вашу задачу, я должен понимать порядок действий, которые Вы предпринимаете и файлы, которые создаются на каждом шаге обработки.
Итак, похоже у Вас есть исходный "файл.asm".
Далее, Вы хотите обработать его с помощью командного файла: tasm.bat "файл"
Если tasm.bat запускается без параметра или файл отсутствует, то tasm.bat должен позволить осуществлять ввод имени файла с клавиатуры.
Далее, ИМХО - я не спец по Tasm, tasm.bat должен проделать какие -то шаги по обработке этого файла, при этом будут создаваться новые файлы с именами "файл" и различными расширениями.
Необходимо знать:
1. Путь к этим файлам
2. Расширение этих файлов.
Чтобы "Предусмотреть также вывод на экран монитора содержимого файла листинга трансляции в постраничном режиме" необходимо знать полное имя файла (с путём) с листингом.
Кстати, попутно, просмотр листинга в постраничном режиме - не самый удобный способ анализа и отладки, я бы предпочел какой-нибудь простенький вьювер или редактор, чтобы можно было этот листинг скролить в любую сторону на любое число строк, например edit.com.
Так что для решения Вашей задачи необходимо подробно её описАть.
Кстати, если у Вас присутствует файл Tasm.exe, то наличие файла tasm.bat может привести к коллизии и непредсказуемым ошибкам, так как оба файла исполнимые, я бы предпочел другое имя, например, asm.bat

=====
Нет времени на медленные танцы

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

6

= общий =    18.06.2021, 14:07
Megaloman:

Код [Shell]
start "" C:\Windows\System32\cmd.exe

Это код запуска командной строки. Аналог: <WIN> + <R>

Сейчас у меня WIN 10x64, но в х32, всегда пересылал на рабочий стол и менял этот параметр:

Автоматический вход в рабочую папку.

Т.к. у меня уже WIN 10x64, на рабочую папку настроен DosBox.
smile

Содержимое ВАТ-файлов рабочей папки

ВАТ -файл, к примеру ТС2
Код [Shell]
D:\lang\tasm\tasm.2\tasm %1
D:\lang\tasm\tasm.2\tlink %1/t

В командной строке набираю ТС2 имя
В итоге у меня появляются OBJ + COM file, Если есть символ [b]L[/b ]в имени ВАТ-файла, это значит. что нужно создаватьь полный пакет для анализа.

Думаю, что автор вопроса хочет, чтобы в мой командный файл дабавили некотроый анализ введенных данных.


=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

q_id

Megaloman

Мастер-Эксперт

ID: 137394

7

= общий =    18.06.2021, 17:50
Зенченко Константин Николаевич:

Думаю, что автор вопроса хочет, чтобы в мой командный файл дабавили некотроый анализ введенных данных.


Модернизирую Вашу первую строку. Пропишите правильные пути к файлам и убейте красное Echo для реальной работы, чтобы эта строка стала похожа на Вашу первую: я скачал TASM.ver.2.02.English.zip, но что-то с ним делать, кроме извлечения, не рискую.
Что делать далее - мне нужно понимание задачи, разъяснение, что далее.
Код
@Echo Off
cls
	Set "PTasm=Z:\lang\tasm\tasm.2"
	Set "PAsm=Z:\lang\tasm\tasm.2\ASM"
	Set "ExtAsm=Asm"
	Set "TasmExe=tasm.exe"
	Set "TlinkExe=tlink.exe"

	Pushd "%PTasm%" ||(
		Echo "%PTasm%" not found
		Pause
		Exit /B 2
	)
	
	If "%1"=="" (
		Call :Input "FAsm" ||Exit /B
	) Else (
		Set "FAsm=%PAsm%\%~1.%ExtAsm%"
		If Not Exist "%PAsm%\%~1.%ExtAsm%" (
			Echo "%~dpnx0 %1" !!! File in argument "%PAsm%\%~1.%ExtAsm%" not found!
			Call :Input "FAsm" ||Exit /B
		)
	)
	Echo %PTasm%\%TasmExe% %FAsm%
pause
Exit /B

:Input
SetLocal
	Set "FTest="
	SET /P "FTest=Input name Of .%ExtAsm% file "
	Set "FTest=%PAsm%\%FTest%.%ExtAsm%"
	If Exist "%FTest%" (EndLocal &Set "%~1=%FTest%" &Exit /B)
	Echo File %FTest% not found
	EndLocal
	Echo.
	CHOICE /C TC /N /M "T-Try again, C-Cancel"
 	If %ErrorLevel%==1 GoTo :Input
EndLocal
Exit /B 2
Я бы предпочел в Вашей первой строке все имена файлов писать в кавычках, не знаю, как Tasm на это среагирует.

И, повторюсь, не надо называть командный файл именем, совпадающим c exe-файлом или с иным другим исполнимым файлом. Назовём его, допустим, asm.bat или asm.cmd.
Я не знаю, как запустить bat-файл в DosBox.

Offtopic: Кстати, Вы можете рассказать мне, как настроить высоту окна для поста, чтобы в последующей попытке что-то сказать, не надо было бы его ручками заново растягивать? Уж очень неудобно. И диктатора smile беспокоить наивными вопросами не очень хочется.

=====
Нет времени на медленные танцы

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

8

= общий =    18.06.2021, 20:30
Megaloman:

Что делать далее - мне нужно понимание задачи, разъяснение, что дале


Это реальная кофигурайия РС

С помощью DosBox и файла конфигурации:
Код
. . .
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
Mount d: c:\Cat\
d:
cd my

Я перехожу в рабочую папку:


В папке, my, есть несколько ВАТ-файлов, когда нужно использовать нужный колпилятор в нужном режиме, я вызываю его. К примеру вот только для Вас, написал(обратите внимание на число в низу и имя файла)

Запускаю DosBox и набираю команду TC2 210618(имя файла такое, компилирую и запускаю результат:

как-то так.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

9

= общий =    18.06.2021, 21:05
Megaloman:

И, повторюсь, не надо называть командный файл именем, совпадающим c exe-файлом или с иным другим исполнимым файлом


Я не называю, сам ВАТ-файл не содержит имени исполняемого файлао, там %1-первый параметр, %2 - второой, . . . %5 - пятый, и так далеее.
К примеру ТC2L
Код
D:\lang\tasm\tasm.2\tasm %1,,,
D:\lang\tasm\tasm.2\tlink %1

В MASM я каждое имя должен был бы прописыватоь отдельно и обязательно с расширением. В ТASM, как видете, достаточно запятых.

smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

q_id

Megaloman

Мастер-Эксперт

ID: 137394

10

= общий =    18.06.2021, 21:07
Зенченко Константин Николаевич:

УУУУ! В DosBox командный язык очень примитивный, от Dos 5.0 ?
И Tasm работает только из-под DosBox?
И смысла запускать C:\Windows\System32\cmd.exe из-под него вообще никакого - не работает.

=====
Нет времени на медленные танцы

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

11

= общий =    18.06.2021, 22:12
Megaloman:

И Tasm работает только из-под DosBox


Даже то, что Tasm может создавать код под WIN, он работает в 16-ти битном режиме, Разработчики INTEL предложили систему POSIX, основаную на сегментации, каждой программе нарезался свой сегмент(хотя в защищенном режиме, нет сегментов, а селекторы), это был какбы селекторно-сегментный симбиоз. Разработчики ОСей отказалисьеё использовать = коммерция=время разработки -время эксперементов. Разработчики INTEL показали им "боровик" - по самый локоть, может больше, и в процессорах х64 убрали сегментацию, и после этого пропал 16-ти битный режим. В процессорах х32 этот режим ещё есть.

Начиная с WIN-ХР перестали поддерживатся графические режимы, выход был в DosBox или другом эмуляторе, к примеру как bosch

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

q_id

Megaloman

Мастер-Эксперт

ID: 137394

12

= общий =    19.06.2021, 17:51
Зенченко Константин Николаевич:

Offtopic: "Какая гадость, эта Ваша заливная рыба!" - для DosBox приличный батник не напишешь. Даже Set /P не работает. Когда-то ненавидел батники за их убожество, решал задачи в JS и VBS, пока не увидел в более поздних осях весьма продвинутые возможности CMD и плотно стал работать предпочтительно с CMD.
Придумал решение:
Написал батник, который решает задачу, придуманную Вами smile , так как клиент не удосужился разжевать, что ему надо.
Идея: батник анализирует, есть ли в аргументе имя (без расширения) .asm - файла, если нет или он не найден, выдаётся диалог на его ввод, а затем формирует батник рядом с Tasm, который потом отправляет в DosBox.

Кстати, такой подход может быть очень удобным: я не знаю, в каком редакторе ваяются коды для Tasm, можно использовать любой, главное, чтобы коды хранились в прописанной папке рядом с Tasm. Можно на мой батник создать иконку, например на рабочем столе, и в проводнике на эту иконку затягивать мышью .asm -файл. Вообще руками его имя вводить не придётся.

Вот содержимое папки с Tasm (спойлера не хватает, пост получается плохо читаемым), красным выделено то, что осталось после работы батника, и, кстати, Asm.bat тоже надо было убить, он уже не нужен. А .lst можно было бы куда-нибудь переместить, чтобы не захламлял папку. Папку _Asm.My я создал для размещение своих (Вашего!) гениальных творений. Я бы и остальное разместил куда-нибудь в другое место, но не владею Tasm.

Код
Содержимое папки Z:\lang\tasm\tasm.2

19.06.2021  16:29    <DIR>          _Asm.My
19.06.2021  13:03    <DIR>          ASM
28.09.2005  20:42    <DIR>          DOC
28.09.2005  20:42    <DIR>          INC
28.09.2005  20:42    <DIR>          MISC

19.06.2021  16:49               107 Asm.bat
19.06.2021  16:39               797 _MEG.EXE
19.06.2021  16:39               717 _meg.lst

19.06.2021  16:49               569 ADD.EXE
13.03.1991  04:02             5 150 GREP.COM
13.03.1991  04:02            21 374 MAKE.EXE
13.03.1991  04:02            21 119 OBJXREF.COM
13.03.1991  04:02            19 641 README
13.03.1991  04:02             3 804 README.COM
13.03.1991  04:02            71 283 TASM.EXE
13.03.1991  04:02           167 927 TASM.TAH
13.03.1991  04:02             6 571 TCREF.EXE
03.01.1980  03:50                27 THELP.BAT
24.11.1992  15:27             7 882 THELP.COM
13.03.1991  04:02            21 315 TLIB.EXE
13.03.1991  04:02            35 124 TLINK.EXE
13.03.1991  04:02             3 891 TOUCH.COM
Вот батник Asm.bat для DosBox, который изготовил основной батник.
Код
@Echo Off
>>_meg.lst tasm.exe _ASM.My\_meg.Asm
If Exist _meg.obj >>_meg.lst tlink.exe _meg.obj 
Pause
Exit

Он достаточно примитивен, и в DosBox выполняется.
Далее нотепадом или другим средством с комфортом просматриваем листинг.
Эклектика, конечно, но кто хочет сделать - ищет способ, кто не хочет - причину.
И наконец (Карфаген должен быть разрушен: спойлер бы получить!), сам код батника, его можно хранить где угодно, единственно пути прописать свои.
Код
@Echo Off
cls
rem Абсолютный путь к Tasm.exe	
	Set "PTasm=Z:\lang\tasm\tasm.2"

rem Относительные пути подпапок для исходного кода, для Obj, для Exe 
	Set "PAsm=_ASM.My"
	Set "PObj=%PAsm%"
	Set "PExe=%PAsm%"
rem ---------------------------
	Set "ExtAsm=Asm"
	Set "TasmExe=tasm.exe"
	Set "TlinkExe=tlink.exe"

rem DOSBox -------
	Set "DBox="C:\Program Files\DOSBox-0.74-3\DOSBox.exe" -userconf"

	Pushd "%PTasm%" ||(
		Echo "%PTasm%" not found
		Pause
		Exit /B 2
	)
	
	If "%1"=="" (
		Call :Input "FAsm" ||Exit /B
	) Else (
		Set "FAsm=%~n1"
		If Not Exist "%PAsm%\%~n1.%ExtAsm%" (
			Echo "%~dpnx0 %1" !!! File in argument "%PAsm%\%~n1.%ExtAsm%" not found!
			Call :Input "FAsm" ||Exit /B
		)
	)

	Set "OutBat=%PTasm%\%ExtAsm%.bat"

	2>nul (
	 	Del "%PTasm%\%FAsm%.obj"
	 	Del "%PTasm%\%FAsm%.map"
	 	Del "%PTasm%\%FAsm%.exe"
	 	>"%PTasm%\%FAsm%.lst" (
			Echo %Date% %Time%
			Echo -----------------------------------------------------------------------------
		)
	)

	>%OutBat% (
		Echo @Echo Off
		Echo ^>^>%FAsm%.lst %TasmExe% %PAsm%\%FAsm%.%ExtAsm%
		Echo If Exist %FAsm%.obj ^>^>%FAsm%.lst %TlinkExe% %FAsm%.obj/t 
		Echo Pause
		Echo Exit
	)

	%DBox% %PTasm%\%ExtAsm%.bat
	
	If Exist %PTasm%\%FAsm%.map >>%PTasm%\%FAsm%.lst (
		Echo											.
		Echo											.
		Echo %PTasm%\%FAsm%.map
		Echo ------------------------------
		More %PTasm%\%FAsm%.map 
	) 

	2>nul (
	 	Del "%PTasm%\%FAsm%.obj"
	 	Del "%PTasm%\%FAsm%.map" 
	)
	Start " " Notepad.exe %PTasm%\%FAsm%.lst 
Exit /B

:Input
SetLocal

	Set "FTest="
	Echo								.
	SET /P "FTest=Input name Of .%ExtAsm% file "
	Set "FTest=%FTest%"
	If Exist "%PAsm%\%FTest%.%ExtAsm%" (EndLocal &Set "%~1=%FTest%" &Exit /B)
	Echo File "%PAsm%\%FTest%.%ExtAsm%" not found
	EndLocal
	Echo								.
	CHOICE /C TC /N /M "T-Try again, C-Cancel"
 	If %ErrorLevel%==1 GoTo :Input
EndLocal
Exit /B 2
Листинг:
Код
19.06.2021 17:54:31,04
-----------------------------------------------------------------------------
Turbo Assembler  Version 2.02  Copyright (c) 1988, 1990 Borland International

Assembling file:   _ASM.My\_meg.Asm  to  _meg.OBJ
Error messages:    None
Warning messages:  None
Passes:            1
Remaining memory:  491k

Turbo Link  Version 3.01 Copyright (c) 1987, 1990 Borland International
Warning: No stack
										.
										.
Z:\lang\tasm\tasm.2\_meg.map
------------------------------

 Start  Stop   Length Name               Class

 00000H 0011CH 0011DH _TEXT              CODE
 0011EH 0011EH 00000H _DATA              DATA

Program entry point at 0000:0100
Warning: No stack

=====
Нет времени на медленные танцы

q_id

Megaloman

Мастер-Эксперт

ID: 137394

13

= общий =    20.06.2021, 14:27
Зенченко Константин Николаевич:

Я решил пересмотреть постановку задачи.
Считаю, ручками хоть где-то набирать имя файла, даже в формате 8.3 достаточно неприятный процесс.
В новом батнике при наличии имеющегося .asm файла вводить его имя руками не нужно никогда.
Во первых, осталась возможность создать на него иконку и затягивать на неё в проводнике .asm файл.
Во вторых, предоставляется графический интерфейс выбора файла.
Примечание: я не сумел заставить в самый первый раз попасть этим интерфейсом в папку по умолчанию, однако в последующих его вызовах интерфейс по умолчанию попадает в нужную папку.
При выборе файла (в аргументе батника или через графический интерфейс) этот файл попадает в редактор для возможного изменения, затем формируется для DosBox батник для выполнения, батник отправляется на выполнение в DosBox, после чего смотрим в редакторе листинг того, что получилось.

Кстати, в autoexec DosBox совершенно не обязательно прописывать для этого батника монтировку диска, при отправке батника с полным именем на DosBox диск прописывается автоматически на папку с батником.

Код
@Echo Off
cls
>nul Chcp 1251

rem Абсолютный путь к Tasm.exe	
	Set "PTasm=Z:\lang\tasm\tasm.2"

rem Относительные пути подпапок для исходного кода, для Obj, для Exe 
	Set "PAsm=_ASM.My"
	Set "PObj=%PAsm%"
	Set "PExe=%PAsm%"
rem ---------------------------
	Set "TasmExe=tasm.exe"
	Set "TlinkExe=tlink.exe"

rem DOSBox -------
	Set "DBox="C:\Program Files\DOSBox-0.74-3\DOSBox.exe" -userconf"
	Set "Editor=C:\Windows\System32\notepad.exe"

Set /A Log=0
If "%1"=="" GoTo :Repeat

Set /A Log=1
Set "FullFAsm=%~1"
Set "FAsm=%~n1"
Set "ExtAsm=%~x1"
Set "ExtAsm=%ExtAsm:~1%"
Set "PathFAsm=%~dp1"
Set "PathFAsm=%PathFAsm:~0,-1%"

:Repeat
	Pushd "%PTasm%" ||(Echo "%PTasm%" not found &Pause &Exit /B 2)

	If %Log%==0 Call :InFile "FullFAsm" "FAsm" "ExtAsm" "PathFAsm" ||Exit /B
	Set /A Log=0
	
	"%Editor%" "%FullFAsm%"
	>nul 2>&1 Copy  "%FullFAsm%" %PAsm%\%FAsm%.%ExtAsm%

	Set "OutBat=%PTasm%\%ExtAsm%.bat"

	2>nul (
	 	Del "%PTasm%\%FAsm%.obj" "%PTasm%\%FAsm%.map" "%PTasm%\%FAsm%.exe" "%PTasm%\%FAsm%.com"
	 	Del "%PathFAsm%\%FAsm%.exe" "%PathFAsm%\%FAsm%.com" "%PathFAsm%\%FAsm%.lst"
	 	>"%PTasm%\%FAsm%.lst" (Echo %Date% %Time% &Echo -----------------------------------------------------------------------------)
	)

	>%OutBat% (
		Echo @Echo Off
		Echo ^>^>%FAsm%.lst %TasmExe% %PAsm%\%FAsm%.%ExtAsm%
		Echo If Exist %FAsm%.obj ^>^>%FAsm%.lst %TlinkExe% %FAsm%.obj/t 
		Echo Pause
		Echo Exit
	)

	%DBox% %PTasm%\%ExtAsm%.bat
	
	If Exist %PTasm%\%FAsm%.map >>%PTasm%\%FAsm%.lst (
		Echo											.
		Echo											.
		Echo %PTasm%\%FAsm%.map
		Echo ------------------------------
		More %PTasm%\%FAsm%.map 
	) 

	2>nul (
	 	Del "%PTasm%\%FAsm%.obj" "%PTasm%\%FAsm%.map"
		>nul 2>&1 Move "%PTasm%\%FAsm%.*" "%PathFAsm%\"  
	)
	Start " " "%Editor%" "%PathFAsm%\%FAsm%.lst" 

	cls
	CHOICE /C RFC /N /M "R-Repeat job with same file, F-Input another file, C-Cancel"
 	If %ErrorLevel%==1 (Set /A Log=1 &GoTo :Repeat)
 	If %ErrorLevel%==2 (Set /A Log=0 &GoTo :Repeat)
Exit /B 0

:InFile
SetLocal
	For /f "tokens=2 delims=:" %%i in ('chcp') Do (Set "sPrevCP=%%i" &>nul Chcp 1251)

	For /f "usebackq delims=" %%i In (
    		`@"%systemroot%\system32\mshta.exe" "about:<FORM><INPUT type='file' name='qq'></FORM><script>document.forms[0].elements[0].click();var F=document.forms[0].elements[0].value;try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(F)};catch (e){};close();</script>" ^
    		1^|More`
	) Do (Set "sFullFileName=%%i" &Set "sFileName=%%~ni" &Set "sFileExt=%%~xi"  &Set "sFilePath=%%~dpi")
	>nul Chcp %sPrevCP%

if Defined sFileName (EndLocal &(Set "%~1=%sFullFileName%" &Set "%~2=%sFileName%" &Set "%~3=%sFileExt:~1%" &Set "%~4=%sFilePath:~0,-1%" &Exit /B 0)
	) Else (EndLocal &Exit /B 2)
Exit /B
ИМХО, при написании кода придётся не раз его править, поэтому я дал возможность повторять процесс многократно - работать надо комфортнее.
Не знаю, насколько корректно я сделал, но, если .asm файл находится в непрописанной папке, то он туда скопируется и будет обрабатываться именно оттуда.
Еще подозреваю, что мне никто не объяснил, что такое листинг, поэтому не стреляйте в пианиста, он играет как умеет.
Батник сохранить в 1251 кодировке, например в Notepad.

=====
Нет времени на медленные танцы

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 88

Коцюрбенко Алексей Владимирович

Старший модератор

Рейтинг: 0

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Evgen aka Chuma

6-й класс

Рейтинг: 0

cain52

3-й класс

Рейтинг: 0

Kdsfofwe21

2-й класс

Рейтинг: 0