欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设W、X、Y、Z均为8位带符号数,要求完成计算表达式W=X+Y-Z。

程序员文章站 2024-02-01 18:44:16
...

设W、X、Y、Z均为8位带符号数,要求完成计算表达式W=X+Y-Z。

代码如下:

DATAS SEGMENT
    ;此处输入数据段代码
    X DB 1
    Y DB 4
    Z DB 3
    W DB 0
    TEN DB 10
    STR1 DB 'X+Y-Z=W',10,13,'$'  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    
    MOV AH,9
    MOV DX,OFFSET STR1
    INT 21H
    
    MOV AH,1
    INT 21H
    SUB AL,30H
    MOV X,AL
    
    MOV AH,2
    MOV DL,'+'
    INT 21H
    
    MOV AH,1
    INT 21H
    SUB AL,30H
    MOV Y,AL
    
    MOV AH,2
    MOV DL,'-'
    INT 21H
    
    MOV AH,1
    INT 21H
    SUB AL,30H
    MOV Z,AL
    
    MOV AH,2
    MOV DL,'='
    INT 21H
    
	MOV AL,X    
	ADD AL,Y   ;x+y
	SUB AL,Z   ;x+y-z               
	MOV W,AL   ;存结果到W单元
;运算结束
	CMP W,0
	JL JL1	
;运算结果大于等于0,输出
	MOV AL,W
	MOV AH,0
	DIV TEN
	MOV BX,AX
	ADD BX,3030H
			 
	MOV AH,2     ;调用DOS中断INT 21H功能的2号子功能
	MOV DL,BL
	INT 21H        ;此3条语句输出数字的ASCII码
    MOV AH,2     ;调用DOS中断INT 21H功能的2号子功能    
	MOV DL,BH
	INT 21H
	JMP EXIT
;运算结果小于0	
JL1:
	MOV AH,2
	MOV DL,'-'
	INT 21H
	
	MOV AL,W
	NEG AL;;求补
	MOV AH,2
	ADD AL,30H
	MOV DL,AL
	INT 21H
	JMP EXIT
	
EXIT:
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

运算结果大于10输出
设W、X、Y、Z均为8位带符号数,要求完成计算表达式W=X+Y-Z。运算结果大于0小于10输出
设W、X、Y、Z均为8位带符号数,要求完成计算表达式W=X+Y-Z。运算结果小于0输出
设W、X、Y、Z均为8位带符号数,要求完成计算表达式W=X+Y-Z。
注意

输出负数时要记得求补

相关标签: 汇编 算法