Dosseg
.model small
.stack 100h
.data
X db 89
z db ?
msg1 db "heloo$"
.code
main proc
mov ax,@data
mov ds,ax
mov z,offset x
;X=89
Y=-3
IF (z LT 0) OR (z GT 79)
lea dx,msg1
mov ah,9
int 21h
ENDIF
IF (Y LT 0)
lea dx,msg1
mov ah,9
int 21h
ENDIF
mov ah,4ch
int 21h
MAIN ENDP
END MAIN
3条答案
按热度按时间a7qyws3x1#
如问题中所示,
if
else
endif
是包括或排除汇编代码行的汇编时条件。在Microsoft Masm(6.11或更高版本)中,.if
.else
.endif
是运行时条件。链接到Masm点指令:https://learn.microsoft.com/en-us/cpp/assembler/masm/directives-reference?view=msvc-170
vptzau2j2#
在结构化编程中,我们有if-then语句,它的模式如下:
在汇编语言的if-goto-label风格中(在C语言中),相同的模式如下所示:
在if-goto-label风格中,我们告诉程序何时跳过then-part,而在C中,我们告诉程序何时执行then-part。因此,if-goto-label的条件需要被否定。
构造
if ( condition ) goto endIf1;
是C语言版本的条件分支。在汇编语言中,条件转移通常作为比较和转移序列完成。例如:变成:
其变为:
8ftvxx2r3#
下面是使用
ifdef
的适当时机示例: