汇编程序36:课程设计1简单分析程序(非全)
1 assume cs:code,ds:data,ss:stack 2 //①实现32位/16位非溢出②十六进制传十进制并保存显示 3 data segment 4 dd 123456h,7891011h,12131415h 5 data ends 6 7 stack segment 8 dd 16 dup(0) 9 stack ends 10 11 code segment 12 start: 13 mov ax,data 14 mov ds,ax //定位数据段 15 mov ax,0020h 16 mov es,ax //临时储存段 17 mov ax,stack 18 mov ss,ax 19 mov sp,20h //定位栈段 20 mov si,0 //遍历每个数据开始 21 mov di,0 //转化成的数字串遍历 22 mov cx,03h //需要转化3个字符 23 s: 24 push cx 25 mov dx,ds:[si+2] 26 mov ax,ds:[si] 27 mov bp,1 28 mov cx,0ah 29 s1: 30 call spi_div //非溢出除法 31 push cx //对每次运算余数压栈 32 push dx 33 push ax 34 add ax,dx //把低位与高位数相加,溢出? 35 mov cx,ax 36 jcxz s2 //判断商是否为0,为0则结束除 37 mov cx,0ah 38 inc bp 39 pop ax 40 pop dx 41 jmp short s1 //持续除10,取余 42 s2: 43 pop ax 44 pop dx 45 call dis_tra //显示字符串 46 add si,4 47 pop cx 48 loop s 49 call copy_to //复制到目的地 50 mov ax,4c00h 51 int 21h 52 spi_div: 53 push ax 54 main: 55 mov ax,dx 56 mov dx,0 57 div cx 58 mov bx,ax 59 pop ax 60 div cx 61 mov cx,dx 62 mov dx,bx 63 ok: 64 ret 65 dis_tra: 66 pop bx 67 mov cx,bp 68 main1: 69 pop ax 70 add al,30h 71 mov byte ptr es:[di],al 72 inc di 73 loop main1 74 ok1: 75 push bx 76 ret 77 copy_to: 78 mov si,0 79 mov cx,di 80 s3: 81 mov al,es:[si] 82 mov ds:[si],al 83 inc si 84 loop s3 85 ok2: 86 ret 87 code ends 88 89 end start