当前位置:编程学习 > 汇编语言 >>

汇编编程:把bx中1的个数放到AL中 0 的个数放到AH中并在屏幕上显示1和0 的个数 bx=000f.谢谢高手。

补充:谢谢各位高手了,要不我就挂科啊,程序应该显示1---4,0--12. 提示编程 1,首先找出“1”和“0” 的个数 2,将“1”和“0”的个数转换为BCD码 3将BCD码转换为ASCII码和CRT显示 要求编程简单易懂,由于本人是初学者,编程的步骤最好是加上详解哦,奖励丰厚哦。谢谢高手们了,大恩大德没齿难忘!
追问:恩人  您好,实在是太感谢了,但是我还有一点不明白就是:MESS 	DB 0AH,0DH,'1---'
AL1	DB ' '
AL2 	DB '   '
	DB '0---'
AH1	DB ' '
AH2	DB '   $'
DB 后面定义的是什么字符啊,是什么意思啊再次感谢,但是这部分内容我们没有学呢,还有别的办法吗?还有就是程序里怎么没有
 MOV AH,02     
INT 21  
这条语句?哦  ,我们还没学*$*字符呢,有没有别的办法啊
答案:;汇编编程:把bx中1的个数放到AL中 0 的个数放到AH中并在屏幕上显示1和0 的个数 bx=000f.谢谢高手

。

;用MASM 5.0编译通过。

data segment
MESS 	DB 0AH,0DH,'1---'
AL1	DB ' '
AL2 	DB '   '
	DB '0---'
AH1	DB ' '
AH2	DB '   $'
data ends
code segment
        assume cs:code, ds:data 
main proc far
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
;-------------------------
MOV AX,0
MOV BX,0F0fH	;此处的BX可设任意值
MOV CX,16
NEXT:
SHL BX,1
JC INC_AL
INC AH
JMP L1
INC_AL:
INC AL
L1:
LOOP NEXT

CMP AH,10
JA ADJ_AH
ADD AH,30H
MOV AH1,AH
JMP AL_D
ADJ_AH:
SUB AH,10
ADD AH,30H
MOV AH2,AH
MOV AH,31H
MOV AH1,AH 

AL_D:

CMP AL,10
JA ADJ_AL
ADD AL,30H
MOV AL1,AL
JMP DISP
ADJ_AL:
SUB AL,10
ADD AL,30H
MOV AL2,AL
MOV AL,31H
MOV AL1,AL

DISP: 
mov ah,09
mov dx ,offset MESS
int 21h

;-------------------------
ret

main endp         
code ends
end start
其他:dseg segment
buffer db 255,?,255 dup (?)
mess db 0dh,0ah,"$"
num0 db "-----0$"
num1 db "-----1$"
buff db "please input the string(0/1)$"
dseg ends

cseg segment
assume cs:cseg,ds:dseg
start:
mov ax,dseg
mov ds,ax

mov dx,offset buff
mov ah,09h
int 21h
mov dx,offset buffer
mov ah,0ah
int 21h
mov si,offset buffer + 2
mov cl,buffer +1
mov al,0
mov ah,0
inc cl
dec si

call jisuan
mov dx,offset num0
mov ah,9h
int 21h
call display
mov al,bh
call display
mov dx,offset num1
mov ah,9h
int 21h
mov ah,4ch
int 21h

jisuan proc near
again:
  inc si
  dec cl
  jz  display
  cmp byte ptr [si],30h
  jz again2
  inc ah
  mov bh,ah
again2:
  cmp byte ptr [si],31h
  jz again
  inc al
  jmp again
  ret
  jisuan endp
display proc near
  push  ax
  push dx
  mov dx,offset mess
  mov ah,9h
  int 21h
  pop dx
  pop ax
  add al,30h
  cmp al,39h
  jbe     display2
  add al,7h
  mov al,ah 
display2:
mov dl,al
mov ah,02h
int 21h
ret
display endp

cseg ends 
end start 

上一个:汇编语言 d1 dw 1234h和d2 db 12h,34h有什么区别
下一个:汇编程序请教(51单片机)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,