汇编语言程序
TITLE 从键盘输入两位16进制数,输出其2进制数形式
data segment
tt1 db 0h
data ends
stack segment para stack
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,es:data,ss:stack
sub1 proc far
start: push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
mov es,ax
call sub4
mov cl,4
shl al,cl
mov tt1,al
call sub4
add al,tt1
mov cx,8
next: rol al,1
mov tt1,al
and al,00000001
call sub2
mov al,ttl
loop next
ret
SUB1 ENDP
sub4 proc
mov ah,1
int 21h
cmp al,"9"
ja qq1
sub al,30h
jmp qq2
qq1: sub al,57h
qq2: ret
sub4 endp
SUB2 PROC
cmp al,9
ja g1
add al,"0"
jmp g2
g1: add al,37h
g2: mov dl,al
mov ah,2
int 21h
RET
SUB2 ENDP
code ends
end start
帮忙修改一下这个程序,使其能按题目要求输出正确答案。然后将题目改为“输出其8进制数形势”,在原有程序的基础上改写(就是不要复杂的的指令代码,用到左循环就可以,我还是个汇编菜鸟)。非常感谢!!!
答案:二进制:data segment
tt1 db 0h
data ends
stack segment para stack
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,es:data,ss:stack
sub1 proc far
start: push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
mov es,ax
call sub4
mov cl,4
shl al,cl
mov tt1,al
call sub4
add al,tt1
mov cx,8
next: rol al,1
mov tt1,al
and al,01h ;用二进制直接表示在下一个程序中出现问题,没有深究,改为16进
制表示了
call sub2
mov al,tt1 ;此处有错误
loop next
ret
SUB1 ENDP
sub4 proc
mov ah,1
int 21h
cmp al,"9"
ja qq1
sub al,30h
jmp qq2
qq1: sub al,57h ;默认输入小写字母
qq2: ret
sub4 endp
SUB2 PROC
add al,"0" ;是0,1则不必判断与9的大小
mov dl,al
mov ah,2
int 21h
RET
SUB2 ENDP
code ends
end start
八进制:
data segment
tt1 db 0h
data ends
stack segment para stack
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,es:data,ss:stack
sub1 proc far
start: push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
mov es,ax
call sub4
mov cl,4
shl al,cl
mov tt1,al
call sub4
add al,tt1
mov cx,2 ;八进制就是二进制三位一组
rol al,cl
mov tt1,al
and al,03h
call sub2
mov al,tt1
next: rol al,1
rol al,1
rol al,1
mov tt1,al
and al,07h
call sub2
mov al,tt1
loop next
ret
SUB1 ENDP
sub4 proc
mov ah,1
int 21h
cmp al,"9"
ja qq1
sub al,30h
jmp qq2
qq1: sub al,57h
qq2: ret
sub4 endp
SUB2 PROC
add al,"0"
mov dl,al
mov ah,2
int 21h
RET
SUB2 ENDP
code ends
其他:说实话,我以前也用汇编,现在改用keilc了,现在看到汇编就头大,建议你还是用c做吧 同样的问题?
http://zhidao.zhaoxi.net/question/340565352.html
上一个:在汇编语言中,编写一个程序段,在DX高4位全为0时,使AX=0:否则使A= - 1
下一个:汇编问题