Программа сборки для получения строки от пользователя
Привет,
Я пытаюсь изучить программирование ASM на MS-DOS, чтобы получить строку от пользователя.
Но во время выполнения он автоматически перезагружает ОС, зависает или плохо себя ведет, в то время как та же программа выполняется на Windows-XP, она не дает никаких ошибок во время выполнения.
Не могли бы вы, пожалуйста, помочь мне в этом отношении относительно того, где я иду не так?
Ниже окружающей среды:
Ассемблер Тасм
ОС: MS-DOS71, XP
.Model Small .Stack 100H .Data CR Equ 0DH LF Equ 0AH NL Equ 00H MsgX db 32H Dup (NL) .Code Run: MOV AX, @Data MOV DS, AX MOV AX, Offset MsgX CALL GetStr CALL Exit GetChr: PUSH BX PUSH CX PUSH DX MOV AH, 01H INT 21H POP DX POP CX POP BX RET GetStr: PUSH AX PUSH BX PUSH CX PUSH DX MOV BX, AX GetStrLoop: CALL GetChr MOV Byte Ptr [BX], AL CMP Byte Ptr [BX], CR JE GetStrFree INC BX JMP GetStrLoop GetStrFree: MOV Byte Ptr [BX], NL POP DX POP CX POP BX POP AX RET Exit: MOV AH, 4CH INT 21H End Run
[no name]
Ну, я хотел бы упомянуть одну из ошибок, которые я получаю во время выполнения, как показано ниже
"Ошибка процессора неверный код операции. процесс убийства"
Kuthuparakkal
попробуй изменить эту мову ах, 01Х
кому: MOV AH, 09H
[no name]
Ты только догадываешься? Функция 09H используется для отображения строки на экране, в то время как 01H используется для приема символа с экрана.
Как ты думаешь, какая разница, если я даже изменю их ?