汇编,麻烦高手解释一下每一句程序,谢谢

adm1m 2008-06-04 10:00:40
麻烦高手解释一下每一句程序,谢谢

如果以下有错误的解释麻烦帮我修改为正确的,谢谢

引用
;转换 ------------宏
bc macro ;把BX中的和 调整转换成ascii能输出
mov ax,bx
mov dx,0
div cx ;除法cx和ax dx中保留余数 ax保留商
mov bx,dx
mov dl,al
add dl,30h ;变成能显示的ascii

mov ah,02h ;输出al
int 21h
endm


enter macro ;回车换行 ---------宏
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
endm


;以上为需要调用的宏

data segment
msg db 'The result only can show 5 long number!',' ','Press "Esc" to exit',13,10,'$'
msg2 db ' ',13,10,'input N (small than "11111")',13,10,'cin N :$'
error db 13,10,' The char you pressed Not a number!',13,10,'$'
space db ' ',13,10,'$'
;tast db 'tast is Test!',13,10,'$'
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax

mov dx,offset msg ;输出提示
mov ah,09h
int 21h

lop:mov dx,offset msg2 ;输出提示2
mov ah,09h
int 21h

;以下接收输入的N

mov bx,0
nechr: mov ah,1 ;回显输入
int 21h


cmp al,1bh
je ext
sub al,30h ;ascii上减掉30 数字字符就是自己的ascii-30
;cmp al,1h
jl exit ;al比1小 ,ascii不到字符0,累加
cmp al,9d
jg eror ;ascii超出字符9,累加


;mov dx,offset tast
;mov ah,9
;int 21h
;jmp ext

cbw ;db变dw,字节扩展指令
xchg ax,bx ;xchg是互换指令
mov cx,10d ;十进制10存入cx
mul cx ;乘法,cx和前面的al
xchg ax,bx ;互换
add bx,ax ;加法
jmp nechr ;无条件循环,做下一个数字

exit:mov cx,bx ;开始递减累加
mov bx,0
loop1: add bx,cx ;和存入BX
loop loop1 ;cx递减条件循环

enter ;回车换行宏

mov cx,10000d ;转化为十进制输出,最高显示5位
bc ;调用宏
mov cx,1000d
bc
mov cx,100d
bc
mov cx,10d
bc
mov cx,1d
bc

mov dx,offset space
mov ah,09h
int 21h

jmp lop

eror:mov dx,offset error
mov ah,9
int 21h
jmp lop

mov ah,4ch
int 21h
ext:
code ends
end start
...全文
86 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2008-06-04
  • 打赏
  • 举报
回复
解释每一句? 这个, 好像有些夸张了. 还是说明下自己看哪些语句不太明白, 然后再作解释比较合理
adm1m 2008-06-04
  • 打赏
  • 举报
回复
麻烦各位大虾来帮帮啦!

感谢感谢

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧