80x86組合語言程式設計 三個數字進行比較

2021-07-09 15:00:53 字數 2329 閱讀 7141

用組合語言編寫乙個程式,從鍵盤接受三個10進製數(0到9,輸入其它符號則輸出錯誤提示)。

把三個數字進行比較,三個數都不相等顯示0,三個數中有兩個不相等顯示1,三個數都相等顯示2。

按照題目要求,做而論道編寫的程式如下,已經除錯成功:

assume cs:code, ds:data

data segment

msg1     db  10, 13, ' input (0 ~ 9): ', '$'

err_tip  db  10, 13, ' input  error .', 10, 13, '$'

i_buff   db  ?, ?, ? 

o_msg    db  10, 13, 10, 13, ' the out is: '

o_buff   db  ?, 10, 13, '$'

data ends

code segment

begin:

mov   ax, data

mov   ds, ax

lea   bx, i_buff

mov   cx, 3    ;輸入三次

lop:

lea   dx, msg1

mov   ah, 9

int   21h

mov   ah, 1

int   21h

cmp   al, '0'

jb    eee

cmp   al, '9'

ja    eee

mov   [bx], al

inc   bx

loop  lop

jmp   prog    ;輸入結束,轉去比較

eee:

lea   dx, err_tip

mov   ah, 9

int   21h

jmp   lop

;三個數都不相等顯示0;

;三個數中有兩個不相等顯示1;

;三個數都相等顯示2。

prog:

lea   bx, i_buff

mov   al, [bx + 0]

cmp   al, [bx + 1]

jz    equ_0_1

cmp   al, [bx + 2]

jz    equ_0_2

mov   al, [bx + 1]

cmp   al, [bx + 2]

jz    equ_1_2

n_equ:

mov   o_buff, '0'

jmp   disp

equ_0_1:

cmp   al, [bx + 2]

jz    all_equ

mov   al, [bx + 1]

cmp   al, [bx + 2]

jz    all_equ

equ_0_2:

equ_1_2:

mov   o_buff, '1'

jmp   disp

all_equ:

mov   o_buff, '2'

disp:                           ;比較結束,下面是顯示結果

lea   dx, o_msg

mov   ah, 9

int   21h

mov   ah, 4ch

int   21h

code ends

end   begin

程式經過編譯、連線後,執行時,顯示如下:

c:\masm510>nnn

input (0 ~ 9): 3

input (0 ~ 9): 3

input (0 ~ 9): 3

the out is: 2

c:\masm510>nnn

input (0 ~ 9): 3

input (0 ~ 9): 5

input (0 ~ 9): 6

the out is: 0

c:\masm510>nnn

input (0 ~ 9): 3

input (0 ~ 9): 6

input (0 ~ 9): 3

the out is: 1

c:\masm510>nnn

input (0 ~ 9): 5

input (0 ~ 9): 8

input (0 ~ 9): 8

the out is: 1

c:\masm510>nnn

input (0 ~ 9): 2

input (0 ~ 9): 2

input (0 ~ 9): 0

the out is: 1

c:\masm510>

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...