汇编编程:把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单片机)