汇编语言学习(三)

这部分主要介绍一下汇编语言程序的三种结构:顺序结构、分支程序结构、循环结构。

1.顺序结构(略)
2.分支结构
(1)设计一个分段函数,x>0,y=1;x=0,y=0;x<0,y=-1.

    .486
DATA SEGMENT USE16
X DW ?
DATA ENDS
CODE SEGMENT USE16
     ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
      MOV DS,AX
      MOV AX,X
      OR AX,AX  ;自身异或操作不改变,改变的是标志位
      JE ZERO   ;如果是0的话跳转到ZERO
      JNS PLUS  ;如果是正数的话跳转到PLUS
      MOV BL,0FFH;BL赋予初值-1
      JMP HALT  ;如果是负数的话跳转HALT
      ZERO:MOV BL 0
      JMP HALT
      PLUS:MOV BL 1
HALT: MOV AH,4CH
      INT 21H
CODE ENDS 
     END START

(2)将BX寄存器的内容以二进制的形式显示在屏幕上。

    .486
CODE SEGMENT USE16
     ASSUME CS:CODE;
BEG: MOV BX,3456H
     MOV CX,16
     MOV AL,'0'
     ROL BX,1   ;左移操作
     JNC NEXT   ;如果是0的话,直接显示
     MOV AL,'1' ;非0,显示1
NEXT: MOV AH,0EH
      INT 10H
      LOOP LAST
      MOV AH,4CH
      INT 21H
CODE ENDS
    END BEG

(3)某科室9人,统计月收入在800-900间的人数,并且用十进制表示。

    .486
DATA SEGMENT USE16
SALARY DW DUP(?)    ;如果定义为DB,那么最多工资为FFH,也就是256,显然不符合题意
DATA ENDS
CODE SEGMENT USE16
     ASSUNME DS:DATA,CS:CODE
BEGIN:MOV AX,DATA
      MOV DS,AX
      MOV BX,OFFSET SALARY
      MOV CX,9
      MOV DL,0
AGAIN:MOV AX,[BX]
      CMP AX,800
      JC NEXT      ;有进位,即小于800
      CMP AX,900
      JA NEXT
      INC DL    ;计数加1
NEXT: ADD BX,2      ;由于定义为DW类型,所以+2
      LOOP AGAIN
      ADD DL,30H    ;由于要求十进制显示
      MOV AH,2
      INT 21H
      MOV AH,4CH
      INT 21H
CODE ENDS
     END BEGIN

3.循环结构
(1)求1-10的累加和

    .486
DATA SEGMENT USE16
SUM DW ?
DATA ENDS
CODE SEGMENT USE16
     ASSUME DS:DATA,CS:CODE
START PORC FAR
BEGINN:PUSH DS
      XOR AX,AX
      PUSH AX       ;AX为0
      MOV AX,DATA
      MOV DS,AX
      MOV CX,10
      MOV AX,0
AGAIN:ADD AC,CX
      LOOP AGAIN
      MOV SUM,AX
      RET
START ENDP
CODE ENDS
     END BEGIN

(2)从BUF单元开始为1个ASCII码字符串,找到其中最大的送到屏幕显示

下面介绍一下子程序和宏指令

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值