王爽 汇编 实验10
生活随笔
收集整理的這篇文章主要介紹了
王爽 汇编 实验10
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 顯示字符串
第一次寫出來(lái)的代碼發(fā)現(xiàn)只能用作特定問(wèn)題,如果其他程序調(diào)用子程序?qū)?huì)出錯(cuò).后面的題目也就無(wú)法完成.所以重新寫了一遍,進(jìn)入后子程序中使用的寄存器全部入棧
1 assume cs:code 2 3 data segment 4 db 'Welcometomasm!',0 5 data ends 6 7 stack segment 8 db 16 dup (0) 9 stack ends 10 11 code segment 12 start: 13 mov dh,8 14 mov dl,3 ;第八行第三列 15 16 mov cl,2 ;顏色 17 18 mov ax,data 19 mov ds,ax ;ds指向數(shù)據(jù)段 20 21 mov si,0 22 call show_str 23 24 all: 25 jmp short all ;一直循環(huán) 26 27 mov ax,4c00h 28 int 21h 29 30 show_str: 31 push dx 32 push ax 33 push cx ;子程序開始前入棧 34 push si 35 36 mov ax,0b800h 37 mov es,ax ;es指向現(xiàn)存的起始地址 38 39 mov al,160 ;一行可現(xiàn)實(shí)80個(gè)字符,每個(gè)字符2字節(jié).160字節(jié) 40 dec dh ;行-1 41 mul dh ;乘,結(jié)果在ax中 42 mov bx,ax 43 ;(n行-1)*160=n行開頭的偏移地址 44 45 mov al,2 ;一個(gè)字符占2列 46 dec dl ;列-1 47 mul dl 48 mov di,ax ;列的偏移地址 49 ;(n列-1)*2=當(dāng)前列的偏移地址 50 51 ;顏色設(shè)置 52 mov ch,0 53 mov dx,cx 54 s: 55 mov cl,[si] ;ds:[si]指向字符串的首地址 56 mov ch,0 57 jcxz ok 58 mov ax,[si] 59 mov es:[bx+di],ax 60 mov es:[bx+di+1],dx 61 ;一個(gè)字母占兩個(gè)字節(jié),一個(gè)ascii 62 add di,2 63 inc si 64 jmp short s 65 66 ok: 67 pop si 68 pop cx 69 pop ax 70 pop dx 71 ret 72 73 code ends 74 end start?
圖片顯示:
?3. 數(shù)值顯示
1 assume cs:code 2 data segment 3 dw 16 dup (0) 4 data ends 5 6 code segment 7 start: 8 mov bx,data ;指向數(shù)據(jù)段 9 mov ds,bx 10 11 mov si,0 12 mov ax,12345 13 call dtoc 14 15 mov dh,3 16 mov dl,3 17 mov cl,2 18 call show_str 19 20 ;一直循環(huán) 21 all: 22 jmp short all 23 24 mov ax,4c00h 25 int 21h 26 27 dtoc: 28 push ax 29 push cx 30 push bx 31 push si 32 push di ;備份 33 34 mov bx,10 35 mov di,0 ;記錄循環(huán)的次數(shù) 36 37 ;循環(huán)s用來(lái) 38 sd: 39 mov dx,0 40 div bx 41 add dx,30h 42 43 push dx ;用棧存儲(chǔ)然后出棧調(diào)整順序 44 inc di 45 mov cx,ax ;ax為商,商為0結(jié)束 46 47 jcxz okd 48 49 jmp short sd 50 okd: 51 52 mov cx,di 53 sd1: 54 pop ax 55 mov [si],al ;將值傳入 ds:[si] 56 inc si 57 loop sd1 58 59 pop di 60 pop si 61 pop bx 62 pop cx 63 pop ax 64 ret 65 66 ; 字符展示子程序 67 show_str: 68 push ax 69 push bx 70 push cx ;子程序開始前入棧 71 push di 72 push si 73 74 mov ax,0b800h 75 mov es,ax ;es指向顯存的起始地址 76 77 mov al,160 ;一行可現(xiàn)實(shí)80個(gè)字符,每個(gè)字符2字節(jié).160字節(jié) 78 dec dh ;行-1 79 mul dh ;乘,結(jié)果在ax中 80 mov bx,ax 81 ;(n行-1)*160=n行開頭的偏移地址 82 83 mov al,2 ;一個(gè)字符占2列 84 dec dl ;列-1 85 mul dl 86 mov di,ax ;列的偏移地址 87 ;(n列-1)*2=當(dāng)前列的偏移地址 88 89 ;顏色設(shè)置 90 mov ch,0 91 mov dx,cx 92 s_show: 93 mov cl,[si] ;ds:[si]指向字符串的首地址 94 mov ch,0 95 96 jcxz ok_show 97 98 mov ax,[si] 99 mov es:[bx+di],ax 100 mov es:[bx+di+1],dx ;顏色設(shè)置 101 ;一個(gè)字母占兩個(gè)字節(jié),一個(gè)ascii 102 add di,2 103 inc si 104 jmp short s_show 105 106 ok_show: 107 pop si 108 pop di 109 pop cx 110 pop bx 111 pop ax ;出棧 112 ret 113 114 code ends 115 end start
轉(zhuǎn)載于:https://www.cnblogs.com/Triomphe/p/8545461.html
總結(jié)
以上是生活随笔為你收集整理的王爽 汇编 实验10的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一步一步实现iOS QQ第三方登录
- 下一篇: UWP Composition API