零基础汇编 实验10-3题
本帖最后由 ┈━═☆佳佑 于 2013-6-20 19:19 编辑;题目是 将 data段 123,12666,1,8,3,38 以十进制显示出来。
assume cs:code,ss:stack
data segment
dw 123,12666,1,8,3,38,0,0 ; 后加两字 构成16字节 便于计算(ds:0-f)
dw 24 dup (0) ;定义三行16字节 存放ASCII码 (ds:10h-3fh)
data ends
stack segment
db 16 dup (0)
stack ends
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov di,16
mov ax,stack
mov ss,ax
mov sp,16
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;转换;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
call dtoc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
call show_str
mov ax,0100h
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;转换;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dtoc: mov bx,0
push bx ;栈入0定位
mov ax, ;低16位
s0: mov dx,0 ;高16位
mov cx,10 ;除数
div cx
mov cx,dx
add dx,30h
push dx
loop s0 ;取ASCII
s1: pop cx
mov ,cl
inc di
jcxz s2
loop s1 ;每字按顺序排放(loop可改为JMP)
s2: mov cx,ds:
add si,2
jcxz s3
jmp dtoc ; !!!!!问题在这!!!!
s3: ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
show_str: ret ;按步骤来 dtoc 还没对
code ends
endstart
问题在这! (55.) 这用loopdtoc 就能在 cmddebug 里顺利跟踪!用jmp在 在debug里面“t”跟踪不了总乱返回出程序!
;我把显示段子程序加上去 用LOOP指令 能显示到1 用JMP指令什么都不显示,用LOOP 只能显示到 DS段第三个字“1”(CX)=0001h ,运行LOOP指令 都是先CX-1再判断是否循环 所以 DS段第三字后就不显示了 。为什么 用 jmpdtoc 就debug 跟踪不了呢?
看上去不错,谢谢分享 看上去不错,感谢分享。 不是看上去不错的问题 呀 这程序还是错的 完成不了题目要求 只能显示到“123,12666,1” 后面的几个字节根本不显示
页:
[1]