清华大学出版社 TSINGHUA UNIVERSITY PRESS 例:把BX中的二进制数以十六进制的形式显示在屏幕上 BX 2
BX 1 2 3 4 例:把 BX 中的二进制数以十六进制的形式显示在屏幕上
清华大学出版社 TSINGHUA UNIVERSITY PRESS mov ch 4 rotate: mov cl, 4 rol bx cl moy al bl and al ofh add al 30h '0N'9 ASCII 30HN39H cmp al, 3ah J1 printit add al 7h A'~’F’ ASCII41H~46H printit:r mov dl, al moy ah. 2 int 2]h dec ch nz rotate
…… mov ch, 4 rotate: mov cl, 4 rol bx, cl mov al, bl and al, 0fh add al, 30h ; ’0’~’9’ ASCII 30H~39H cmp al, 3ah jl printit add al, 7h ; ’A’~’F’ ASCII 41H~46H printit: mov dl, al mov ah, 2 int 21h dec ch jnz rotate ……
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例:从键盘接收十进制数并存入BX 125 mov bx 0 313235 newchar: mov ah 1 ;键盘输入 int 21h sub al 30h exit 0退出 cmp a J9 exit >9退出 cbw xchg ax,bx(0×10)+1)×10+2)×10+51 mov CX, 10 mul Cx xchg ax, bx add bx ax mp newchar exit
…… mov bx, 0 newchar: mov ah, 1 ;键盘输入 int 21h sub al, 30h jl exit ; <0退出 cmp al, 9 jg exit ; >9退出 cbw xchg ax, bx mov cx, 10 mul cx xchg ax, bx add bx, ax jmp newchar exit: …… 例:从键盘接收十进制数并存入 BX ( ( 0×10)+1 )×10+2 )×10+5 1 2 5 31 32 35
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例:从键盘接收十六进制数并存入BX a mov bx. 0 316166 newchar: mov ah 1 ;键盘输入 int 21h sub al 30h J exit ;<0退出 cmp al, 10 J1 add_to sub al 27h cmp al, Oah j1 exit ;<"ai 退出 cmp al, 10h Jge exit ;>·f'退出 add to: mov cl 4 sh bx. cl moy ah, 0 (0×16)+1)×16+0a)×16+0f add bx, ax ]mp newchar exit
…… mov bx, 0 newchar: mov ah, 1 ;键盘输入 int 21h sub al, 30h jl exit ; <0退出 cmp al, 10 jl add_to sub al, 27h ; ‘a’~‘f’ cmp al, 0ah jl exit ; <‘a’退出 cmp al, 10h jge exit ; >’f’退出 add_to: mov cl, 4 shl bx, cl mov ah, 0 add bx, ax jmp newchar exit: …… 例:从键盘接收十六进制数并存入 BX 1 a f 31 61 66 ((0×16)+1) × 16+0a) × 16+0f
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例:将正数n插入一个已整序的正数字数组 dw array_head dw3,5,15,23,37,4952,65,78,99 array_end dw 105 dw 32 X一 mov ax h array_-head> mov array_head -2, Offffh 5 mov si. 0 15 compare. 23 cmp array_end [si], ax 37 le insert 49 mov bx, array_end [si] 52 mov array_end [si +2], bx 65 sub si.2 78 jmp short compare 99 insert: array._end-)105 mov array_end [si +2], ax 32
x dw ? array_head dw 3,5,15,23,37,49,52,65,78,99 array_end dw 105 n dw 32 例:将正数 n 插入一个已整序的正数字数组 …… mov ax, n mov array_head-2, 0ffffh mov si, 0 compare: cmp array_end [si], ax jle insert mov bx, array_end [si] mov array_end [si+2], bx sub si, 2 jmp short compare insert: mov array_end [si+2], ax …… 3 5 15 23 37 49 52 65 78 99 105 32 -1 array_head→ array_end→ n → x →