-
printing a character
here is my code
.model small
.stack
include stdlib.a
includelib stdlib.lib
.data
word TYPEDEF byte
dseg segment para public 'data'
j word 0FF00h
k word 0FFF0h
l word ?
dseg ends
.code
main proc
mov ax, dseg
mov ds, ax
mov es, ax
mov ax, j
putc
main endp
end main
its giving me the error : OPERAND TYPES DO NOT MATCH
is it my TYPEDEF? whatS the problem?
-
Re: printing a character
First, word and byte are both reserved words (data types) in assembly and you should not redefine them. You're lucky? you did not get an error in your typedef.
Second, byte accepts values of up to 0FFh only. Again, you're lucky? if you did not get any error in your j and k declarations :D
The "OPERAND TYPES DO NOT MATCH" is in "mov ax, j". j is a byte (1 byte) and you are trying to copy it to a WORD register (2 bytes) and so the assembler is complains about type mismatch.
Edit: you should use "CALL" in using a function (e.g. call putc). Also, you have to be careful in passing parameter as well as the calling convention used by the function (e.g. _cdecl, _stdcall, _pascal, etc.) to avoid stack corruption.