1樓:許滄海
編寫將鍵盤輸入的三個數值,86h,34h,22h,利用三個數進行運算,
s=86h*34h-22h,螢幕上顯示運算結果。
1)鍵盤輸入ascii字串
2)ascii轉換二進位制
3)二進位制進行運算
4)二進位制運算結果轉換成ascii
5)ascii螢幕輸出
2樓:
;經驗證,下式結果正確
;s=86h*34h-22h=1b38h-22h=1b16hcode segment
assume cs:code,ds:codeorg 100h ;com格式
start:
push cs
pop ds
mov ax,0e53h ;顯示's'
int 10h
mov al,'=';顯示'='
int 10h
call @in
mov dl,al
mov bl,2ah;"*"
call show ;顯示'h*'
call @in
mov dh,al
mov bl,2dh ;"-"
call show ;顯示'h-'
call @in
mov ah,0
mov bp,ax
mov bl,3dh ;"="
call show ;顯示'h='
mov ah,0
mov al,dl ;al←86h
mov bl,dh ;bl←34h
mul bl ;86h*34h
;未考慮不夠減的情況
sub ax,bp ;ax←ax-22h
mov cx,4
mov dx,ax
next:
push cx
mov cl,4
rol dx,cl
mov ax,dx
and al,0fh ;取出一位
or al,30h ;二進位制轉換為asciicmp al,'9';比9小直接顯示
jb t2
add al,7 ;是a`f的,加7校正
t2:mov ah,0eh ;顯示asciiint 10h
pop cx
loop next ;下一位
mov ax,0e48h ;'h'
int 10h
mov ah,0
int 16h ;暫停
mov ah,4ch
int 21h ;結束
@in:;可輸入兩位十六進製制數
xor bx,bx ;bx←0
mov cx,4
@1:call input
mov bl,al
shl bl,cl ;bl←bl*10h
call input
add al,bl ;al←兩位十六進製制數retinput: ;僅允許輸入並顯示0-9和a-fmov ah,0
int 16h ;無回顯鍵盤輸入
cmp al,'0';十六進製制數 0-f
jb input ;為有效輸入
cmp al,'9'
jbe q1
and al,0dfh ;大小寫,同轉為大寫cmp al,'a';"a(a)"
jb input
cmp al,'f';"f(f)"
ja input
q1:mov ah,0eh
int 10h ;顯示有效輸入
sub al,30h ;0-9之間,ascii轉換為二進位制cmp al,9
jbe q3
sub al,7
q3:ret
show:
mov ax,0e48h ;"h"
int 10h
mov al,bl
int 10h
retcode ends
end start
3樓:匿名使用者
; 字元轉二進位制,dx=結果
input:
sub cx, cx
mov dx, cx
lp1:
mov ah, 1
int 21h
cmp al, 13
je ok
cmp al, '0'
jl error
cmp al, '9'
jg error
sub al, '0'
mov ah, 0
xchg ax, dx
mul cl
add dx, ax
mov cx, 10
jmp lp1
ok:ret
error:
mov dx,-1
ret;二進位制轉字元,輸出,ax=要輸出的值output:
mov cl, 10
lp2:
cmp ax, 0
je ok2
div cl
push ax
call lp2
pop ax
mov dl, al
or dl, 30h
mov ah, 2
int 21h
ok2:ret
求匯程式設計序,編寫組合語言,匯程式設計序基礎語法
什麼都沒有,怎麼寫?匯程式設計序基礎語法 注意 立即數書寫必須以數字開頭,若十六進製制數第一位為字母,可在前面新增0。變數一旦被定義,就具有以下三個屬性 表示該變數存放在哪個邏輯段中,變數的段基值可以用seg運算子獲取。表示變數所在位置與段起始點之間的位元組數,變數的偏移量可以用offset運算子獲...
匯程式設計序學習,怎麼學習彙編
1 王爽的 組合語言 第2版 2 羅雲彬的 windows環境下32位組合語言程式設計 第2版 3 溫冬蟬,沈美明 清華大學出版社,ibm pc 組合語言程式設計教程 4 美 kip 著,溫玉傑等譯 intel 組合語言程式設計 第四版 設ax 0001h,bx 0001h,則加法指令如下 add ...
彙編 延時子程式,組合語言中延時子程式的問題
daily proc near mov cx,2000h d0 mov ax,0ffffh d1 dec ax jz d1 loop d0 daily endp 延時大概是0.33s 其實延時跟cpu有很大關係,不能用軟體精確計算,可以用8254實現,硬體和軟體功能具有邏輯上的等效性。 用delay...