汇编语言分支程序实例

汇编语言分支程序实例

   {       2x (x<0)
S= {       3x (0≤x≤10)
   {       4x (x>10)

代码

data segment
        x dw -6,9,12 ;x单元中保存的数 
        s dw 3 dup(?)
        data ends
        code segment
        assume cs:code,ds:data
        start:
        	mov ax,data
        	mov ds,ax
        	mov cx,3  ;3是循环次数
        	mov si,0
        let0:
        	mov ax,x[si]  ;取出x
        	cmp ax,0	;x>=0?
        	jge let1	;是,转到let1
        	sal ax,1	;否,计算2*x	
        	jmp out1	;跳到公共出口out1
        let1:
        	cmp ax,10	;x>10?
        	jg let2		;是,转到let2
        	mov bx,3
        	imul bx		;否,计算3*x
        	jmp out1	;跳到公共出口out1
        let2:
        	mov bl,4	;计算4*x
        	imul bl
        out1:
        	mov s[si],ax	;保存s
        	add si,2
        	dec cx		;cx-1
        	cmp cx,0	
        	jnz let0	;cx!=0 转移到let0
        	mov ah,4ch	;cx=0 程序结束
        	int 21h	
        code ends
        end start

测试结果
在这里插入图片描述
在这里插入图片描述
在DOS下执行程序后又返回到DOS,没有显示。要想观察运行结果 ,采用DEBUG执行EXE文件。在DEBUG下,用U命令查看;找到断点0039,用“G 0039“执行;再用D命令查看结果。
在这里插入图片描述
显示的都是十六进制补码
前三个字单元分别为FAH, 09H,0CH 分别代表十进制的-6,9,12如果需要验证其他数,可修改X单元存储的数。
从6号单元开始存放三个结果
F4H 1BH 30H
-12 27 48

到此则宣布该实例结束

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云淡风轻ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值