论坛首页· 友情链接申请·申请版主· 广告投放· 道具中心· 设为首页· 收藏本站
发新话题
打印

请帮忙调试下一个关于ascii数转化为二进制码的汇编应用程序

请帮忙调试下一个关于ascii数转化为二进制码的汇编应用程序

有谁用《ibm pc汇编语言程序设计(第五版)》的吗
请版忙调试一下13.5的程序
一个关于ascii数转化为二进制码 的应用程序
程序输完,编译通过
执行就是不能利用显示调用 输入,输出 显示的子程序
更详细的课本注释在附件pdf 227页

title    a13calc(exe)    ;输入量和速率的ASCII值,确定十进制小数位,转换为二进制,计算乘积,显示ascii
.model small
.386
.stack 64
.data

leftcol    equ    28        ;屏幕位置的等价符号
rightcol    equ    52
toprow    equ    10
botrow    equ    14
qtyparam    label    byte    ;键盘输入的量参数表
maxqlen    db    6
actqlen    db    ?
qtyfld    db    6 dup(?)
ratepar    label    byte    ;键盘输入的速率参数表
maxrlen    db    6
actrlen    db    ?
ratefld     db    6 dup(?)

prompt1    db    'Quantily?    '
prompt2    db    'Rate?        '
prompt3    db    'product=    '
ascprod    db     10 dup(30h)
prompt4    db    'Press any key to continuc or esc to quit'

adjust    dw    ?                ;数据
binprod    dw    00
binqty    dw    00
binrate    dw    00
col        db    00
decind    db    00
mult10    dw    01
nodecims    dw    00
row        db    00
shift    dw    ?
tenwd    dw    10
.code
a10main    proc far
    mov ax,@data
    mov ds,ax
    mov es,ax
    mov ax,3            ;设置显示方式和清屏
    int 10h
a20:    call q10            ;清除窗口
    call b10            ;接受量和速率
    call c10            ;把量转换为二进制
    call d10            ;把速率转换为二进制
    call e10            ;计算乘积,舍入
    call f10            ;把乘积转化成ASCII
    call g10            ;显示乘积
    call h10            ;用户暂停
    cmp al,1bh        ;按ESC
    jne a20
    mov ax,4c00h
    int 21h
a10main endp

b10    proc near
    mov row,toprow+1
    mov col,leftcol+3
    lea bp,prompt1
    mov cx,15
    call k10
    mov ah,ah
    lea dx,qtyparam
    int 21h
    mov col,leftcol+3
    inc row
    lea bp,prompt2
    mov cx,15
    call k10
    mov ah,0ah
    lea dx,ratepar
    int 21h
    inc row
b10    endp

c10 proc near
    mov nodecims,00        ;清除十进制小数位的长度
    mov cx,actqlen
    lea si,qtyfld-1
    add si,cx
    call j10
    mov ax,binprod
    mov binqty,ax
    ret
c10 endp

d10 proc near
    movzx cx,actrlen
    lea si,ratefld-1
    add si,cx
    call j10
    mov ax,binprod
    mov binrate,ax
    ret
d10 endp

e10 proc near
    mov cx,10
    lea di,ascprod
    mov al,30h
    cld
    rep stosb
    mov shift,10
    mov adjust,00
    mov cx,nodecims
    cmp cl,6
    ja e40
    sub cx,02
    jle e30
    mov nodecims,02
    mov ax,01
e20:    imul ax,10
    loop e20
    mov shift,ax
    shr ax,1
    mov adjust,ax
e30:    mov ax,binqty
    mul binrate
    add ax,adjust
    adc dx,00
    cmp dx,shift
    jb e50
e40:    xor ax,ax
    jmp e70
e50:    cmp adjust,00
    jz e80
    div shift
e70:    xor dx,dx
e80: ret
e10 endp

f10    proc near
    lea si,ascprod-7
    mov byte ptr[si],'.'        ;设置小数点
    add si,nodecims
f30:    cmp byte ptr[si],'.'
    jne f40
    dec si
f40:    cmp dx,00
    jne f50
    cmp ax,0010
    jb f60
f50:    div tenwd
    or dl,30h
    mov [si],dl
    sub dx,dx
    jmp f30
f60: or al,30h
    mov [si],al
    ret
f10    endp

g10 proc near
    mov col,leftcol+3
    mov cx,09
    lea si,ascprod
g20:    cmp byte ptr[si],30h
    jne g30
    mov byte ptr[si],20h
    inc si
    loop g20
g30:    lea bp,prompt3
    mov cx,20
    call k10
    ret
g10 endp

h10    proc near
    mov col,20
    mov row,22
    lea bp,prompt4
    mov cx,40
    call k10
    mov ah,10h
    int 16h
    ret
h10    endp

j10    proc near
    mov mult10,0001
    mov binprod,00
    mov decind,00
    xor bx,bx
j20:    mov al,[si]
    cmp al,'.'
    jne j30
    mov decind,01
    jmp j40
j30:    and ax,000fh
    mul mult10
    add binprod,ax
    mov ax,mult10
    imul ax,10
    mov mult10,ax
    cmp decind,00
    jnz j40
    inc bx
j40:    dec si
    loop j20
    cmp decind,00
    jz j90
    add nodecims,bx
j90:    ret
j10    endp

k10    proc near
    mov ax,1301h
    mov bx,0016h
    mov dh,row
    mov dl,col
    int 10h
k10 endp

q10    proc near
    mov ax,0605h
    mov bh,16h
    mov ch,toprow
    mov cl,leftcol
    mov dh,botrow
    mov dl,rightcol
    int 10h
q10    endp
end a10main
附件: 您所在的用户组无法下载或查看附件
自学难成才,我们需要集体的力量 自学成才的是天才,但也希望你们的智慧与人共享

TOP

发新话题