程式設計實現鍵盤輸入16位二進位制數,轉換成等值十進位制數顯示。
程式執行後,要求操作員鍵入16位二進位制數,然後程式立即進行轉換,顯示出等值的十進位制數。
對於非法鍵入不受理,不回顯,也不顯示錯誤資訊。
顯示格式示範如下:
000010011101011b = 1259d
做而論道編寫的程式如下:
;******************************====
data segment
buf1 db 10, 13, 'please input bin : ', 13, 10, '$'
buf2 dw 0
data ends
;----------------------------------
code segment
assume cs:code, ds:data, es:data
beg:
mov ax, data
mov ds, ax
mov ah, 09h
mov dx, offset buf1
int 21h
mov bx, 0
mov cx, 16
_in_:
mov ah, 07h ;輸入字元
int 21h
cmp al, 13
je _out_
cmp al, '0'
jb _in_
cmp al, '1'
ja _in_
add bx, bx
cmp al, '1'
jne no_0
inc bx
no_0:
mov ah, 02h
mov dl, al
int 21h
loop _in_
;--------------------------
_out_:
mov buf2, bx ;儲存
mov ah, 02h
mov dl, 13
int 21h
mov dl, 10
int 21h
mov ax, buf2
mov bx, 2
call out_ax
mov ah, 02h
mov dl, 'b'
int 21h
mov dl, '='
int 21h
mov ax, buf2
mov bx, 10
call out_ax
mov ah, 02h
mov dl, 'd'
int 21h
exit:
mov ah, 4ch
int 21h
;------------------------------
out_ax proc ;
or ax, ax
jz _0_
loop_p:
xor dx, dx
div bx
mov cx, ax ;
or cx, dx
jz _e_ ;
push dx ;
call loop_p
pop dx ;
cmp dl, 10
jb a30
add dl, 7
a30:
add dl, '0' ;
jmp _1_
_0_:mov dl, '0' ;
_1_:call putc
_e_:ret
out_ax endp
;------------------------------
putc proc
mov ah, 2
int 21h
retputc endp
;------------------------------
code ends
end beg
;******************************====
經過編譯、連線、執行後的結果,完全符合題目要求。
提問者評價:thx !
80x86組合語言 分類統計
組合語言的程式設計題!急 有100個學生成績,存放在以data為首址的位元組儲存單元中。試統計其中90 含90 以上的人數,60 90 含60 之間的人數,60以下的人數,分別存入max,middle,min三個變數中。15 分鐘前 做而論道 十七級 最快回答 assume ds qq,cs cc ...
組合語言 80x86定址方式
1 立即定址方式 立即定址方式中指令的運算元是8位或16位立即數,並直接出現在指令中。例如 mov al,10h 源運算元為立即定址 執行後al 10h mov ax,0a48h 源運算元為立即定址 執行後ax 0a48h 立即定址只能用於源運算元,不能用於目的運算元。2 暫存器定址方式 暫存器定址...
80x86組合語言程式設計P50
386 stack segment use32 db 200 dup 0 stack ends con equ 500 data segment use16 a dw m buf db ab 0dh,0ah b dw 0ffaah d dd buf m db 2 dup 1 2 dup 2,b 12...