| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 564 人关注过本帖
标题:大家来看看这段汇编有什么错误?
只看楼主 加入收藏
wxwdxx
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-10-11
收藏
 问题点数:0 回复次数:0 
大家来看看这段汇编有什么错误?

要实现从键盘输入四个数字,然后转化成二进制输出,再转化成十六进制输出。

程序用emu8086运行没问题,但生成exe文件后运行就不对了。

dseg segment
enter db 4 dup(?)
aa dw 000ah
sum dw 0000h
hhh db 4 dup(?)
dseg ends

cseg segment
assume cs:cseg,ds:dseg
main proc far
push ds
mov ax,0000h
push ax
mov bx,0000h
mov cx,0000h
mov ax,offset dseg
mov ds,ax
lea di,enter
lea si,hhh
start:mov ah,01h
int 21h
mov [di],al
inc di
inc cl
cmp cl,04h      
jnz start          向enter传值,传4次
sub di,04h         首地址复位
chang:mov ax,0000h
mov al,[di]
add ax,sum
sub ax,30h
cmp cl,07h         {[(a*10)+b]*10+c*10}+d=abcd 
jz unmul
mul aa
unmul:mov sum,ax 最后结果传给sum
inc cl
inc di
cmp cl,08h
jnz chang
mov cl,00h
mov bx,sum         
next: shl bx,1h          
jc print
mov dl,30h
mov ah,02h
int 21h
jmp re
print:mov dl,31h        左移,有进位打1没进位打0
mov ah,02h
int 21h
re: inc cl
cmp cl,10h
jnz next

mov cx,00h         逻辑左移、右移,并转换成ASCII码,存入hhh中 
mov cl,04h
mov ax,sum
shr ah,cl
mov ch,ah
cmp ch,0ah
jns t1
add ch,30h
t11: mov [si],ch
inc si
mov ax,sum
shl ah,cl
shr ah,cl
mov ch,ah
cmp ch,0ah
jns t2
add ch,30h
t22: mov [si],ch
inc si
mov ax,sum
shr al,cl
mov ch,al
cmp ch,0ah
jns t3
add ch,30h
t33: mov [si],ch
inc si
mov ax,sum
shl al,cl
shr al,cl
mov ch,al
cmp ch,0ah
jns t4
add ch,30h
t44: mov [si],ch
sub si,03h
mov cl,00h
jmp en

t1: add ch,37h
jmp t11
t2: add ch,37h
jmp t22
t3: add ch,37h
jmp t33
t4: add ch,37h
jmp t44

en: mov ah,2h
mov dl,[si]
int 21h
inc cl
inc si
cmp cl,4h
jnz en
mov ah,4ch
int 21h



main endp

cseg ends
end main

搜索更多相关主题的帖子: 汇编 
2006-10-11 10:35
快速回复:大家来看看这段汇编有什么错误?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036965 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved