프로그램이 제대로 작동하지 않을 것 -이 기능은 일부 로컬 스토리지, 다음 일반적인 형식이 필요
show_msg:
mov bp,sp
mov ah,9
mov dx,[bp+2]
int 21h
ret
경우 NOT은 "str1"의 주소를 가리 킵니다.
먼저 str1의 주소를 SP가 가리키는 스택으로 푸시합니다. 그리고 그것은 아무런 문제가되지 않습니다.
하지만 str1을 인쇄하기 위해 "show_str"함수를 호출하면 원래 IP 값이 SP가 가리키는 스택에 푸시되기 때문에 SP는 더 이상 str1을 가리 키지 않습니다.
SP의 변경을 알지 못했지만 SP의 값을 인쇄 할 문자열의 주소를 저장해야하는 DX로 전달하려고 시도했습니다.
제 조언은 프로그램을 작성하는 데 "정상적인"스타일을 사용해야한다는 것입니다. 언어 자체의 비밀을 모색하지 않는 한 인생을 편하게 만들어주기 때문입니다.
이것은 내 프로그램입니다.
;file: showmsg.asm (.COM)
;nasm -fbin showmsg.asm -o showmsg.com
org 0x100
mov ax, cs
mov ds, ax
mov ax, str1 ;Transmit parameter to show_msg through AX
call show_msg
mov ax, 4c00h
int 21h
show_msg: ;the address offset of the string is stored in ax
mov dx, ax ;DS:DX=string address
mov ax, 0900h ;AH=09
int 21h
ret
str1: db "Hello, world!$"
어떤 시스템과 운영 체제가 제대로 작동 할 것으로 예상됩니까? – ShinTakezou
16 비트 DOS에서 ... – user1091856