用組合語言編寫乙個程式,從鍵盤接受三個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...