regconfi

导航

寒假汇编语言作业(4)

程序设计项目四

 

编程计算x(x>2)的y(y>2)次方。使用add指令实现。

另,若学到第10章,使用两种方式实现:

(1)只使用add指令实现;

(2)只使用mul指令实现;

并将计算式显示在屏幕中央。

 

例如:

计算4的3次方。在屏幕中央显示格式如下:

4

^

3

-----

64

 

注意:结果不能超过16位寄存器可存储的最大值。

参考代码:

 //坐标不正确,切用ADD的方法没有想出来

  1 assume cs:code
  2 data segment
  3         dw 1h
  4         dw 2h
  5         dd 0
  6         dw 0ah
  7         dw 3 dup (0)
  8 data ends
  9 
 10 stack segment
 11         dw 16 dup()
 12 stack ends
 13 
 14 code segment
 15 start:
 16         mov ax,data
 17         mov ds,ax
 18         mov ax,stack
 19         mov ss,ax
 20         mov sp,20h
 21         mov ax,0b800h
 22         mov es,ax
 23 ;        call get_1             ;用add 尚没有方法
 24         call get_2
 25         mov ax,ds:[0]
 26         mov di,280h
 27         call show_8
 28         mov ax,ds:[2]
 29         mov di,320h
 30         call show_8
 31         mov di,3c0h
 32         mov ax,'^'
 33         mov ah,71h
 34         mov es:[di],ax
 35         mov di,460h
 36         call show_16
 37         mov ax,4c00h
 38         int 21h
 39 
 40     show_8:
 41         mov bx,0
 42      s8:
 43         mov dx,0
 44         div word ptr ds:[8]
 45         add dx,30h
 46         push dx
 47         mov cx,ax
 48         inc bx
 49         jcxz ok8
 50         jmp s8
 51      ok8:
 52         mov cx,bx
 53      s8_:
 54         pop ax
 55         mov ah,71h
 56         mov es:[di],ax
 57         add di,2
 58         loop s8_
 59         ret
 60 
 61     show_16:
 62         mov ax,ds:[4]
 63         mov ds:[10],ax
 64         mov ax,ds:[6]
 65         mov ds:[12],ax
 66         mov bx,0
 67      s16:
 68         mov dx,0
 69         call divdw
 70         add dx,30h
 71         push dx
 72         inc bx
 73         mov cx,ax
 74         jcxz ok16
 75         jmp s16
 76      ok16:
 77         mov cx,bx
 78      ok16_:
 79         pop ax
 80         mov ah,71h
 81         mov es:[di],ax
 82         add di,2
 83         loop ok16_
 84         ret
 85 
 86     get_1:
 87         ret
 88 
 89     get_2:                 ;mul
 90         mov dx,0
 91         mov ax,1
 92         mov cx,ds:[2]
 93      sg2:
 94         mul word ptr ds:[0]
 95         loop sg2
 96         mov ds:[4],ax
 97         mov ds:[6],dx
 98         ret
 99 
100     divdw:
101         mov ax,ds:[12]
102         div word ptr ds:[8]
103         mov ds:[12],ax
104         mov ax,ds:[10]
105         div word ptr ds:[8]
106         mov ds:[10],ax
107         mov ds:[14],ax
108         or ax,ds:[12]
109         ret
110 
111 code ends
112 end start
hj4.asm

 

posted on 2015-01-19 20:47  regconfi  阅读(294)  评论(0编辑  收藏  举报