80x86組合語言程式設計 二進位制輸入 十進位制輸出

2021-07-09 15:01:56 字數 2232 閱讀 9283

程式設計實現鍵盤輸入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...