- [zhuleilei_2010] 对程序修改如下,编译通过。 DATASG SEGMENT MESS1 10/22 16:59
- [shjnba] call letterc 这个调用子程序 jmp letterc 这个是转到这个标号 是不 08/25 20:12
- [pascale] 晕,中间的注释没加“;” 注释成代码了。太粗心了 01/02 20:44
- [pascale] 谢谢!大家。 12/19 22:32
- [游客] 我是个内心怕困难的人,(我很想改变)就这样这道题成了一个拦路虎,我不敢再看这道题。 ====== 12/18 22:00
- [jcw2008] 祝贺! 12/18 18:35
- [pascale] 5937000/17800的十六为是14d 两个字节可以放下的呀。 12/09 13:21
- [pascale] 我刚debug的一下 并无溢出。我把图片发一下。 12/09 13:09
- [pascale] 好我看看。 12/09 12:56
- [crazyman] 在第一次div word ptr [di+756] 的时候好像就出异常了。博主debug一下把。 12/08 15:45
- [liuyisu2008] 你好 12/04 13:19
- [acool] 没什么。大家在这里本来有应该相互帮助、相互讨论嘛^_^ 一起加油吧~ 11/27 17:29
[2008-12-18 13:34] 作业设计1 (实验10)
终于完成了, 但并没有想象中的高兴。这个题消磨了我两个礼拜,刚看到题时很想把它实现,但我并没有很好的天赋,支持我很快把它完成。我做到第三个子程序时,才发现他并不是我想象的那样。之前完成的子程序并没有提供很好的独立性,再加上子程序接口的细节有些忘了,我陷入了个个子程序和主程序的细枝末节中。。 我第一次感觉到完成这个题是这麽的困难,甚至是无法完成。 我是个内心怕困难的人,(我很想改变)就这样这道题成了一个拦路虎,我不敢再看这道题。
昨天发生了一件很丢人事,我非常的生气和难过,我决定把这不睡觉也把这道题搞完。 就这样我完善的子程序的独立性,重做的子程序3.
理清了思路,一步步的实现功能,很自然的完成了设计1.
我觉得 子程序的独立性很重要,在完成一个子程序后要记下他的功能和接口, 这十分重要! 2debug的效率好低 3对于带一点的程序要记得多注释。 好了就这麽多。希望对大家有帮助。
源程序:
assume cs:code
data segment
db 16 dup(0) //专门开辟一个16字的长度存放转换后的字符串。 从si=0开始
dd 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982
dd 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990
dd 1991, 1992, 1993, 1994, 1995, 16 , 22 , 382
dd 1356 , 2390 , 8000 , 16000
dd 24486 , 50065 , 97479 , 140417
dd 197514 , 345980 , 590827 , 803530
dd 1183000 , 1184000 ,2759000 , 3753000
dd 4649000 , 5937000 ,3 , 7
dd 9 , 13 , 28, 38 , 130, 220 , 476, 778
dd 1001 ,1442 , 2258 , 2793
dd 4037 , 5635 , 8226 , 11542
dd 11430 , 15257 , 17800
data ends
stack segment
dw 32 dup(0)
stack ends
code segment
start: mov ax, data
mov ds, ax
mov si, 10h
mov ax, stack
mov ss, ax
mov sp, 64
mov cx, 3
mov dl, 3
s4: push cx
mov dh, 3
mov cx, 21
s2:
call dtoc ////转换的内容由ds:di提供,ax接收
push cx
mov cl, 2
call show_str
pop cx
inc dh
add si, 4
loop s2
add dl, 20
pop cx
loop s4
mov dh, 3
mov si, 0
mov cx, 21
s5: push cx
call least ///输除商子程序,把商放在ds:0处调用dtoc转换
//显示
call dtoc
mov cl, 2
call show_str
pop cx
add si, 4
inc dh
loop s5
mov ax, 4c00h
int 21h
dtoc: push ax //子程序3
push dx
push cx
push si
push di
mov ax, [si]
mov dx, [si+2]
mov di, 0 // //计转换了几次
mov si, 0
s: mov cx, 10
call divdw
add cx, 30h
push cx
inc di
mov cx, ax
jcxz s1
jmp s
s1: pop [si]
mov cx, di
sub di, 1
add si, 1
loop s1
mov byte ptr [si], 0 //最后一位为0
pop di
pop si
pop cx
pop dx
pop ax
ret
least: //子程序4
push ax
push dx
push cx
mov ax, ds:[si+64h]
mov dx, ds:[si+66h]
mov cx, ds:[si+0b8h]
call divdw
mov [si], ax
mov [si+2], dx
pop cx
pop dx
pop ax
ret
show_str: push ax //子程序2
push bx
push cx
push dx
push es
push si
push di
mov si, 0
mov ax, 0b800h
mov es, ax
sub dh, 1
mov al, 160
mul dh
mov di, ax
sub dl, 1
mov al, 2
mul dl
add di, ax
mov bl, cl
s3: mov cx, 1
mov al, [si]
mov byte ptr es:[di], al
mov byte ptr es:[di+1], bl
add di, 2
inc si
add cl, [si]
loop s3
pop di
pop si
pop es
pop dx
pop cx
pop bx
pop ax
ret
divdw: push bx//子程序1
mov bx, ax
mov ax, dx
mov dx, 0
div cx
push ax
mov ax, bx
div cx
mov cx, dx
pop dx
pop bx
ret
code ends
end start
昨天发生了一件很丢人事,我非常的生气和难过,我决定把这不睡觉也把这道题搞完。 就这样我完善的子程序的独立性,重做的子程序3.
理清了思路,一步步的实现功能,很自然的完成了设计1.
我觉得 子程序的独立性很重要,在完成一个子程序后要记下他的功能和接口, 这十分重要! 2debug的效率好低 3对于带一点的程序要记得多注释。 好了就这麽多。希望对大家有帮助。
源程序:
assume cs:code
data segment
db 16 dup(0) //专门开辟一个16字的长度存放转换后的字符串。 从si=0开始
dd 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982
dd 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990
dd 1991, 1992, 1993, 1994, 1995, 16 , 22 , 382
dd 1356 , 2390 , 8000 , 16000
dd 24486 , 50065 , 97479 , 140417
dd 197514 , 345980 , 590827 , 803530
dd 1183000 , 1184000 ,2759000 , 3753000
dd 4649000 , 5937000 ,3 , 7
dd 9 , 13 , 28, 38 , 130, 220 , 476, 778
dd 1001 ,1442 , 2258 , 2793
dd 4037 , 5635 , 8226 , 11542
dd 11430 , 15257 , 17800
data ends
stack segment
dw 32 dup(0)
stack ends
code segment
start: mov ax, data
mov ds, ax
mov si, 10h
mov ax, stack
mov ss, ax
mov sp, 64
mov cx, 3
mov dl, 3
s4: push cx
mov dh, 3
mov cx, 21
s2:
call dtoc ////转换的内容由ds:di提供,ax接收
push cx
mov cl, 2
call show_str
pop cx
inc dh
add si, 4
loop s2
add dl, 20
pop cx
loop s4
mov dh, 3
mov si, 0
mov cx, 21
s5: push cx
call least ///输除商子程序,把商放在ds:0处调用dtoc转换
//显示
call dtoc
mov cl, 2
call show_str
pop cx
add si, 4
inc dh
loop s5
mov ax, 4c00h
int 21h
dtoc: push ax //子程序3
push dx
push cx
push si
push di
mov ax, [si]
mov dx, [si+2]
mov di, 0 // //计转换了几次
mov si, 0
s: mov cx, 10
call divdw
add cx, 30h
push cx
inc di
mov cx, ax
jcxz s1
jmp s
s1: pop [si]
mov cx, di
sub di, 1
add si, 1
loop s1
mov byte ptr [si], 0 //最后一位为0
pop di
pop si
pop cx
pop dx
pop ax
ret
least: //子程序4
push ax
push dx
push cx
mov ax, ds:[si+64h]
mov dx, ds:[si+66h]
mov cx, ds:[si+0b8h]
call divdw
mov [si], ax
mov [si+2], dx
pop cx
pop dx
pop ax
ret
show_str: push ax //子程序2
push bx
push cx
push dx
push es
push si
push di
mov si, 0
mov ax, 0b800h
mov es, ax
sub dh, 1
mov al, 160
mul dh
mov di, ax
sub dl, 1
mov al, 2
mul dl
add di, ax
mov bl, cl
s3: mov cx, 1
mov al, [si]
mov byte ptr es:[di], al
mov byte ptr es:[di+1], bl
add di, 2
inc si
add cl, [si]
loop s3
pop di
pop si
pop es
pop dx
pop cx
pop bx
pop ax
ret
divdw: push bx//子程序1
mov bx, ax
mov ax, dx
mov dx, 0
div cx
push ax
mov ax, bx
div cx
mov cx, dx
pop dx
pop bx
ret
code ends
end start
评论次数(3) |
浏览次数(1060) |
类型(汇编作业) |
收藏此文 |