汇编实验2

本实验使用vscode+插件编写代码和调试点击查看教程

实验内容

编写程序计算上面表达式。设X为带符号字数据,存在内存的DAX单元,结果存入DAY单元。如果结果为0,则在显示器上输出字符0;如果为负,则在显示器上输出“-”;否则在显示器上输出“+”。

使用DEBUG工具调试程序,查看程序运行结果。

流程图

实验结果

数据段内容

DSEG SEGMENT
DAX  DW  -1;输入X的值
DAY  DW  0;结果单元
DSEG ENDS

空白处右键选择debug调试

可以看到内存中DAX和DAY单元的初值为FFFF和0000,即-1和0

输入g查看结果显示+,DAX和DAY单元的结果为FFFF和0001(注意不是0100,8086的汇编采用小端法,高位存在高地址,低位存在低地址

根据该分段函数,Y的值不可能为负,所以程序只会显示0或+,不会显示-

当DAX的值为0时显示0

源代码

DSEG SEGMENT
DAX  DW  -1;输入X的值
DAY  DW  0;结果单元
DSEG ENDS
CSEG SEGMENT
    ASSUME  CS:CSEG,DS:DSEG
START:
	MOV  AX,DSEG
    MOV  DS,AX;将DSEG赋值为DS
    MOV  AX,DAX
    CMP  AX,0
	JLE  ABSL;AX小于等于0
    CMP  AX,10
    JLE  TEN;AX小于等于10
    CMP  AX,40
    JLE  FOURTY;AX小于等于40
    JMP  MOVE;AX大于40
ABSL:
	NEG  AX;取绝对值
	JMP  MOVE
TEN:ADD  AX,1000;计算X+1000
    JMP  MOVE
FOURTY:
	MOV  CL,3;计算9X-6
    SHL  AX,CL
    ADD  AX,DAX
    SUB  AX,6
MOVE:
	MOV  DAY,AX;保存结果
	CMP  AX,0
	JZ   EQUAL;结果等于0
	JL   LITTLE;结果小于0
	MOV  AH,2;结果大于0
	MOV  DL,'+';显示+
	INT  21H
	JMP  ENS;结束
EQUAL:
	MOV  AH,2;显示0
    MOV  DL,'0'
	INT  21H
	JMP  ENS;结束
LITTLE:
	MOV  AH,2;显示-
	MOV  DL,'-'
	INT  21H
ENS:MOV  AX,4C00H;结束
    INT  21H
CSEG	ENDS
END    START

感谢大家的观看

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值