汇编语言学习历程(一)分支、循环控制

问题介绍:

以十进制形式输出有符号字数组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 , - 9 0 254 , - 254 255 , - 255 32767 , - 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

运行结果:

你可能感兴趣的:(汇编语言)