请问此汇编程序如何做到屏幕显示?
试按公式Z=((X+Y)*8-X)/4计算Z值,并将结果保存在RESULT中。程序如下:DATA1SEGMENTXDW2YDW4RESULTDW?DATA1ENDSSTA...
试按公式 Z=((X+Y)*8-X)/4 计算Z值,并将结果保存在RESULT中。程序如下:
DATA1 SEGMENT
X DW 2
Y DW 4
RESULT DW ?
DATA1 ENDS
STACK1 SEGMENT PARA STACK
DW 20 DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA1,SS:STACK1
BEGIN: MOV AX,DATA1
MOV DS,AX
MOV BX,X
ADD BX,Y
MOV CL,3
SAL BX,CL
SUB BX,X
MOV CL,2
SAR BX,CL
MOV RESULT,BX
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
现在我想运行后,在屏幕上显示得数RESULT,要加什么指令?谢谢! 展开
DATA1 SEGMENT
X DW 2
Y DW 4
RESULT DW ?
DATA1 ENDS
STACK1 SEGMENT PARA STACK
DW 20 DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA1,SS:STACK1
BEGIN: MOV AX,DATA1
MOV DS,AX
MOV BX,X
ADD BX,Y
MOV CL,3
SAL BX,CL
SUB BX,X
MOV CL,2
SAR BX,CL
MOV RESULT,BX
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
现在我想运行后,在屏幕上显示得数RESULT,要加什么指令?谢谢! 展开
4个回答
展开全部
我调试了能用,你自己拿去调试了看下
帮你加了输出语句
DATA1 SEGMENT
X DW 2
Y DW 4
RESULT DW ?
DATA1 ENDS
STACK1 SEGMENT PARA STACK
DW 20 DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA1,SS:STACK1
BEGIN: MOV AX,DATA1
MOV DS,AX
MOV BX,X
ADD BX,Y
MOV CL,3
SAL BX,CL
SUB BX,X
MOV CL,2
SAR BX,CL
MOV RESULT,BX
mov ax,bx
mov bx,100
cwd
div bx
push dx
add al,30h
mov dl,al
mov ah,02h
int 21h
pop ax
mov bl,10
div bl
mov bl,ah
add al,30h
mov ah,02h
mov dl,al
int 21h
add bl,30h
mov dl,bl
mov ah,02h
int 21h
mov ah,4ch
int 21h
code ends
end begin
帮你加了输出语句
DATA1 SEGMENT
X DW 2
Y DW 4
RESULT DW ?
DATA1 ENDS
STACK1 SEGMENT PARA STACK
DW 20 DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA1,SS:STACK1
BEGIN: MOV AX,DATA1
MOV DS,AX
MOV BX,X
ADD BX,Y
MOV CL,3
SAL BX,CL
SUB BX,X
MOV CL,2
SAR BX,CL
MOV RESULT,BX
mov ax,bx
mov bx,100
cwd
div bx
push dx
add al,30h
mov dl,al
mov ah,02h
int 21h
pop ax
mov bl,10
div bl
mov bl,ah
add al,30h
mov ah,02h
mov dl,al
int 21h
add bl,30h
mov dl,bl
mov ah,02h
int 21h
mov ah,4ch
int 21h
code ends
end begin
展开全部
DATA1 SEGMENT
mes db'Z=((2+4)*8-2)/4= $'
X DW 2
Y DW 4
RESULT DW ?
DATA1 ENDS
STACK1 SEGMENT PARA STACK
DW 20 DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA1,SS:STACK1
BEGIN: MOV AX,DATA1
MOV DS,AX
MOV BX,X
ADD BX,Y
MOV CL,3
SAL BX,CL
SUB BX,X
MOV CL,2
SAR BX,CL
MOV RESULT,BX
lea dx,mes
mov ah,9
int 21h
mov ax,RESULT ;添上
call show ;添上
mov ah,0
int 16h ;等待
MOV AH,4CH
INT 21H
;添上
show: ; 显示AX中的值
push bx
push cx
push dx
xor cx,cx
mov bx,10
t5:xor dx,dx
div bx
or dx,30h
push dx
inc cx
cmp ax,0
jnz t5
t6:pop ax
mov ah,0eh
int 10h
loop t6
pop dx
pop cx
pop bx
ret
CODE ENDS
END BEGIN
mes db'Z=((2+4)*8-2)/4= $'
X DW 2
Y DW 4
RESULT DW ?
DATA1 ENDS
STACK1 SEGMENT PARA STACK
DW 20 DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA1,SS:STACK1
BEGIN: MOV AX,DATA1
MOV DS,AX
MOV BX,X
ADD BX,Y
MOV CL,3
SAL BX,CL
SUB BX,X
MOV CL,2
SAR BX,CL
MOV RESULT,BX
lea dx,mes
mov ah,9
int 21h
mov ax,RESULT ;添上
call show ;添上
mov ah,0
int 16h ;等待
MOV AH,4CH
INT 21H
;添上
show: ; 显示AX中的值
push bx
push cx
push dx
xor cx,cx
mov bx,10
t5:xor dx,dx
div bx
or dx,30h
push dx
inc cx
cmp ax,0
jnz t5
t6:pop ax
mov ah,0eh
int 10h
loop t6
pop dx
pop cx
pop bx
ret
CODE ENDS
END BEGIN
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mov bx,word ptr ds:[RESULT]
mov al,bh
call dsal
mov al,bl
call dsal
dsal:
call altasc
push ax
mov dl,al
mov ah,02h
int 21h
pop ax
mov dl,ah
mov ah,02h
int 21h
ret
altasc:
push cx
mov ah,al
and al,0fh
add al,90h
daa
adc al,40h
daa
xchg al,ah
mov cl,04h
shr al,cl
and al,0fh
add al,90h
daa
adc al,40h
daa
pop cx
ret
mov al,bh
call dsal
mov al,bl
call dsal
dsal:
call altasc
push ax
mov dl,al
mov ah,02h
int 21h
pop ax
mov dl,ah
mov ah,02h
int 21h
ret
altasc:
push cx
mov ah,al
and al,0fh
add al,90h
daa
adc al,40h
daa
xchg al,ah
mov cl,04h
shr al,cl
and al,0fh
add al,90h
daa
adc al,40h
daa
pop cx
ret
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要加上的指令比你目前的程序还要长。
基本上把数转换成BCD码,然后调用21H相关中断输出
基本上把数转换成BCD码,然后调用21H相关中断输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询