急求,汇编语言程序设计,在线等待,谢谢!
8088/86系列CPU实验编程序,求出下列公式中Z的值,并存放于RESUM单元中.Z=[(X+Y)*8-X]/2其中,X=34,Y=58,分别放在VARX,VARY单元...
8088/86系列CPU实验
编程序,求出下列公式中Z的值,并存放于RESUM单元中.
Z=[(X+Y)*8-X]/2
其中,X=34,Y=58,分别放在VARX ,VARY单元中.
运算结果是XXH,即十六进制的显示.
最好在语句面有意思注释,非常感谢!! 展开
编程序,求出下列公式中Z的值,并存放于RESUM单元中.
Z=[(X+Y)*8-X]/2
其中,X=34,Y=58,分别放在VARX ,VARY单元中.
运算结果是XXH,即十六进制的显示.
最好在语句面有意思注释,非常感谢!! 展开
2个回答
展开全部
DATA SEGMENT
VARX DB 34;定义X=34
VARY DB 58;定义Y=58
RUSUM DB ?;定义存放结果Z的RESUM
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,VARX;取出X
ADD AL,VARY;X+Y
MOV CL,3
SHL AL,CL;(X+Y)*8
SUB AL,VARX;(X+Y)*8-X
SHR AL,1;[(X+Y)*8-X]/2
MOV RUSUM,AL;存结果
MOV CH,2;循环两次在屏幕上显示两位十六进制结果
MOV BL,AL
NEXT:
MOV CL,4
ROL AL,CL
AND AL,0FH;取出一位十六进制数
CMP AL,9H
JNA BDY
ADD AL,7;如果十六进制数为A-F,则需要先加7
BDY:
ADD AL,30H;将十六进制数转换为ASCII
MOV DL,AL;在屏幕上显示十六进制数
MOV AH,2
INT 21H
MOV AL,BL
DEC CH
JNZ NEXT
MOV AH,1;等待按键
INT 21H
MOV AH,4CH;结束程序
INT 21H
CODE ENDS
END START
VARX DB 34;定义X=34
VARY DB 58;定义Y=58
RUSUM DB ?;定义存放结果Z的RESUM
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,VARX;取出X
ADD AL,VARY;X+Y
MOV CL,3
SHL AL,CL;(X+Y)*8
SUB AL,VARX;(X+Y)*8-X
SHR AL,1;[(X+Y)*8-X]/2
MOV RUSUM,AL;存结果
MOV CH,2;循环两次在屏幕上显示两位十六进制结果
MOV BL,AL
NEXT:
MOV CL,4
ROL AL,CL
AND AL,0FH;取出一位十六进制数
CMP AL,9H
JNA BDY
ADD AL,7;如果十六进制数为A-F,则需要先加7
BDY:
ADD AL,30H;将十六进制数转换为ASCII
MOV DL,AL;在屏幕上显示十六进制数
MOV AH,2
INT 21H
MOV AL,BL
DEC CH
JNZ NEXT
MOV AH,1;等待按键
INT 21H
MOV AH,4CH;结束程序
INT 21H
CODE ENDS
END START
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询