汇编语言分支程序实例

汇编语言分支程序实例

   {       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

到此则宣布该实例结束

posted @ 2019-04-07 12:49  h云淡风轻  阅读(15)  评论(0编辑  收藏  举报  来源