求汇编解释!

谁能帮我解释下什么意思?
data segment
buf db 0ah,0dh,'shu ru shu zi:$'
b_x db 10
data ends
stack segment
db 128 dup(0)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:mov ax,data
mov ds,ax
lea dx,buf
mov ah,9
int 21h

mov bx,0
mov ax,0
input:mov ah,1
int 21h
cmp al,0dh
jz binary

cmp al,1bh
je exit
and al,0fh
cbw
xchg ax,bx
mul b_x
add bx,ax
jmp input

binary: mov ah,2
mov dl,0ah
int 21h
mov cx,16
disp: mov dl,0
rol bx,1
rcl dl,1
or dl,30h
mov ah,02h
int 21h
loop disp
mov dl,'B'
mov ah,2
int 21h
exit: mov ah,4ch
int 21h
code ends
end start

还有这个哪出现了错误啊?
DATAS SEGMENT
INF1 DB "PLEASE INPUT DECIMAL NUBER:$"
IBUF DB 7,0,6 DUP(77H)
DATAS ENDS
stack segment
db 128 dup(0)
stack ends
code segment
assume cs:code,ds:datas,ss:stack
START:mov ax,datas
mov ds,ax
lea DX,INF1
MOV AH,9
INT 21H
MOV bx,0
MOV AX,0
input:
mov ah,1
int 21h
cmp al,0dh
jz binary
cmp al,1bh
je exit
and al,0fh
cbw
xchg ax,bx
mul ibuf
add bx,ax
jmp input
binary:
mov ah,2
mov dl,0ah
int 21h
mov cx,16
C0:MOV DX,0
MOV AX,bx
CMP AX,0
JE C1
DIV cX
MOV bx,AX
MOV AX,dx
DIV BX
MOV dx,AX
OR DL,30H
MOV [DI],DL
DEC Dx
JMP C0
C1:MOV AX,dx
C2:CMP AX,0
JZ C3
MOV DX,0
DIV BX
OR DL,30H
MOV [SI],DL
DEC SI
JMP SHORT C2
C3:RET
LOOP C3
mov dl,'B'
mov ah,2
int 21h
exit:
mov ah,4ch
int 21h
code ends
end start
谢谢 super_admi 的回答。
可能不能按程序上的来回答啊,解释写在程序的后面,还有下面那个,有错误,不知道在哪啊~谢谢了哈~!

第二个实现的功能跟第一个类似
这一句出现了致命了错误 MUL IBUF,乘数是一个数,而你的IBUF定义了一串的数,系统分辨不出来,第一个帮你解释一下
-------------------------------------------------------
data segment
buf db 0ah,0dh,'shu ru shu zi:$' ;提示信息
b_x db 10 ;为输入部分做准备,定义一个B_X变量,数值为10
data ends
stack segment
db 128 dup(0)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:mov ax,data
mov ds,ax
lea dx,buf ;输出提示信息
mov ah,9
int 21h

mov bx,0 ;把寄存器清零
mov ax,0
input:mov ah,1 ;输入字符
int 21h
cmp al,0dh ;比较输入的字符是否为回车
jz binary ;如果是就跳到BINNARY执行二进制的装换

cmp al,1bh ;比较输入的字符是否为Esc(Esc的ASCII码为1BH)
je exit ;如果是就跳到EXIT,退出
and al,0fh ;取输入数字的真值,输入数字的ASCII中,低四位为该数字的真值,
;例如输入1,则AL的值为31H,执行该指令后,AL的值为1
cbw ;把AL扩展为字,实际上是MOV AH,0
xchg ax,bx ;输入数字转换部分,把输入的真值乘以10加上以后
;输入的真值即为按顺序输入的实际十进制数值
mul b_x ;把先输入的数的真值先乘以10
add bx,ax ;再加上后来输入的真值,结果存放在BX
jmp input ;再输入字符
;下面为转换为二进制部分
binary: mov ah,2 ;输出一个换行符
mov dl,0ah
int 21h
mov cx,16 ;设计数值
disp: mov dl,0
rol bx,1 ;逐位循环左移,最高位移到CF寄存器
rcl dl,1 ;然后再带进位循环左移把CF中的值传给DL
or dl,30h ;把DL中的值转为ASCII码输出,输出的及为二进制数
mov ah,02h
int 21h
loop disp
mov dl,'B' ;在输出的进制制数的结尾输出B
mov ah,2
int 21h
exit: mov ah,4ch ;结束,返回DOS
int 21h
code ends
end start
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-01
晕了.怎么老碰到这些东西?
书上一查就知道答案的东西,也跑来问啊.看来大伙都越来越懒了.

基本上,先定义数据块,然后定义堆栈,再是代码段.

而代码段又基本上是使用21H中断调用:先按照21H中断的调用规则,给寄存器赋值,然后调用之.调用完了后,或许还有什么比较,跳转指令.晕了,不弄本<<DOS中断调用大全>>来,现在谁还记得那些鸟DOS中断调用是做什么的.

汇编求解释,
(1)0100H,这个不需要解释,因为它紧接着org 100h语句 (2)0105H, NUM这个语句是个立即数,汇编程序会直接将所有NUM出现的地方用20H替换,它不占用存储单元 (3)多字节的量遵循低到低、高到高的原则,即低地址位存低字节、高地址位存高字节 所以填'B'

求汇编指令解释dec edx
add byte ptr ds:[eax],al ;将AL寄存器中的内容存入段寄存器DS定位的,由EAX寄存器指向的内存单元.push edi ;将EDI寄存器压入堆栈,注意是四个字节 push ds ;将DS寄存器压入堆栈,注意是两个字节 dec edx ;让EDX寄存器自减一,即 EDX <- (EDX)-1 ...

请问汇编程序, 解释程序, 编译程序分别指?
1、汇编程序 把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观...

汇编程序求解释
DKCX0: ;MOV TMOD,#20H;DKCX0子程序开始 ;MOV TCON,#40H;初始化单片机模式类型 ;MOV PCON,#00H;初始化单片机模式类型 ;MOV SCON,#50H;初始化单片机模式类型 MOV TL1,#0FDH;给T1低8位中断设置初值 MOV TH1,#0FDH;给T1高8位中断设置初值 SETB TR1;打开定时器1中...

汇编语法问题 SUM DB 5 DUP(?)求解释说明意思
SUM DB 5 DUP(?)SUM 是自定义的变量名称。DB:定义字节。DUP:重复。5 DUP(?):5 个重复的未知数。POP SI POP SI 编程人,自己瞎编。写多少次,就凭着他自己的想法,别人,猜不透。

求PIC汇编大神给解释
GOTO $-1 ;否,返回上条指令。;以上四条指令实际上是判断PORTA,3口线上的一个脉冲。MOVLW Level1 ;是,标号Level1地址装入W寄存器。CALL Delay100NuS ;调用Delay100NuS延时子程序。BSF PORTA,2 ;将PORTA,2口线置高电平。MOVLW D'20' ;将十进制数20装入W寄存器。

汇编语言是一种什么程序设计语言?
汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。...

【单片机 ,汇编】最基本的语法,求解释。关于16进制。
第一条指令 是LJMP START 为一条转移指令,转到用户主程序开始的地方,即START处。因为单片机地址是16位的二进制地址,用十六进制表示即是4位十六进制数 如0000H 和0100H 这里H表示十六进制数 0100H地址是用户主程序开始处 即START处。MOV SP,#70H;指令表示将立即数70H传送给SP寄存器,因为...

求 汇编语言的高手 试解释CMP AX,BX 和SOB AX BX 两条语句的异同点_百...
CMP AX,BX 和SUB AX,BX 1、相同点:都是做减法;2、不同点:CMP AX,BX只影响标志位,运算结果不存入目的操作数,即AX-BX的结果不存入AX;SUB AX,BX不仅影响标志位,运算结果存入目的操作数,即AX-BX的结果存入AX。

求大神帮解释一下这段汇编!为什么ORG0000H,有的时候是0100H??_百度知...
一般的单片机上电后,程序从 0000H处开始运行。可能也有从特定地址开始的。程序中 ORG 0000H,代表以下程序代码从这个地址开始存放。由于单片机中有很多固有资源(比如中断)占据了一部分特殊的地址,所以这些特别的地址是不能放普通程序的。所以就有了 AJMP MAIN 和 ORG 30H。

相似回答
大家正在搜