zoukankan      html  css  js  c++  java
  • 汇编语言学习历程(一)分支、循环控制

    问题介绍:

    以十进制形式输出有符号字数组BUF中每个元素的值:负数前面需要输出符号,正数前面不需要符号。各个值之间以空格隔开

    问题分析:

    一个基本的汇编语言入门的例子,需要掌握基本的程序结构,数据定义,还有一些流程控制语句就可以完成了

    源代码:

     1  .386
     2  data segment use16
     3   masg0 db 0ah, 0dh, '=====output singned numbers======',0dh,0ah,'$'
     4   masg1 db 'numbers are:  $'
     5   nums dw 9
     6   buf dw 9, -90254, -254255, -25532767, -32768
     7 count equ ($ - buf)/2
     8  data ends
     9  
    10  stack segment use16 stack
    11   db 200 dup(0)
    12  stack ends
    13  
    14  code segment use16 
    15   assume cs:code, ds:data, ss:stack
    16  start:
    17   ; 初始化
    18   mov ax, data
    19   mov ds, ax
    20   mov ax, stack
    21   mov ss, ax
    22   
    23   ; 输出提示
    24   lea dx, masg0
    25   mov ah, 9
    26   int 21h
    27   
    28   lea dx, masg1
    29   mov ah, 9
    30   int 21h
    31   
    32   ;以十进制输出有符号字数组的元素
    33   mov cx, nums
    34 
    35 shownum:  ;一个个数字处理
    36   mov bx, 9
    37   sub bx, cx
    38   mov ax, bx
    39   cwde ;ax扩展到eax
    40   mov ebx, eax
    41   mov ax, buf[2*ebx] ;获得数据
    42   dec cx   ;处理的数据减少一个
    43   push cx ;保存余下数据的长度
    44   cmp ax, 0  ;取正
    45   jge positive
    46     neg ax  ;取绝对值
    47     ;显示符号
    48     mov bx, ax ;保存ax的元素
    49     mov dl, 2dh ;显示负号
    50     mov ah, 2
    51     int 21h
    52     mov ax, bx ;还原ax的元素
    53   positive:
    54     mov cx, 0
    55     countbit:       ;一位位处理
    56       mov dx, 0
    57       mov bx, 10
    58       div bx  ;除10
    59       push dx ;保存余数
    60       inc cx  ;位数目加一
    61       cmp ax, 0
    62       ja countbit  ;商不为零跳转
    63     ;显示
    64     showbit:
    65       pop dx
    66       dec cx
    67       add dl, 30h
    68       mov ah, 2
    69       int 21h
    70       cmp cx, 0
    71       ja showbit ;大于零,还有位未处理跳转
    72   ;显示空格
    73   mov dl, 20h
    74   mov ah, 2
    75   int 21h
    76   
    77   pop cx    ;数字的数目重新获得
    78   cmp cx, 0
    79   ja shownum ; 大于零,还有数字未处理
    80   ;退出
    81   mov ah, 4ch
    82   int 21h
    83  code ends
    84  end start

    运行结果:

  • 相关阅读:
    游标
    mobaxterm安装与使用(root_35/37/36/121)
    美团笔试--修改矩阵
    美团笔试1--螺旋矩阵
    assert函数
    2019年头条笔试--围坐分糖果
    邻值查找——stl函数lower_bound和upper_bound的使用
    动态规划练习1--腾讯暑期实习正式批
    Windows 7下硬盘安装CentOS6.4的解决方法
    Sublime Text 3 的一些基本使用方法和配置
  • 原文地址:https://www.cnblogs.com/hustlijian/p/2058232.html
Copyright © 2011-2022 走看看