code segment
assume cs:code, ds:data begin: mov ax, data mov ds, ax 。。。
。。。 。。。
mov ah, 4ch int 21h code ends
end begin
2、x,y为16位无符号数,编程计算
18?x?7?y?4,并将结果存放在寄存器DX中。
2如果结果为偶数,则标志flagA=0;如果结果为奇数,则标志flagA=1。给出程序注释(15分)。
data segment
x dw 2
y dw 4 flagA db ? data ends
code segment
assume cs:code, ds:data start: mov ax, data mov ds, ax
mov dx, x ;取数据x置于dx寄存器 mov cl, 4 ;移位次数 shl dx, cl ;dx=16x add dx, x ;dx=17x add dx, x ;dx=18x
mov bx, y ;取数据y置于bx寄存器 mov cl, 3 ;移位次数
shl bx,cl ;bx=8y,注意无符号数左移指令 SHL sub bx, y ;bx=7y add dx, bx ;dx=(18x+7y) sub dx, 4 ;dx=(18x+7y)-4
shr dx,1 ;dx=(18x+7y-4)/2,注意无符号数左移指令 SHR test dx, 0001H ;判断计算结果奇数/偶数 jz l1 ;如果偶数转移至L1处 mov flagA,1 ;否则为奇数,flagA=1
jmp stop ;转移至stop处
l1: mov flagA,0 ;结果为偶数,flagA=0
stop:
mov ah, 4ch int 21h
code ends end start
相关推荐: