|
发表于 2018-10-19 12:46:15
|
显示全部楼层
- assume cs:code, ds:data
- data segment
- db 10 dup (0)
- data ends
- code segment
- start:
- mov ax, 12666
- mov bx, data
- mov ds, bx
- mov si, 0
- call dtoc
- mov dh, 8
- mov dl, 3
- mov cl, 2
- call show_str
- mov ax, 4C00h
- int 21h
- dtoc:
- mov cx, ax
- mov dx, 0
- jcxz ok
- mov bx, 10
- div bx
- add dl, '0'
- mov byte ptr ds:[si], dl
- inc si
- jmp short dtoc
- ok:
- ; 通过上面的循环得到的字符串顺序是倒序,下面翻转字符串
- mov di, si
- dec di
- xor si, si
- next:
- cmp si, di
- jge done
- mov ah, [si]
- mov al, [di]
- mov [si], al
- mov [di], ah
- inc si
- dec di
- jmp next
- done:
- ret
- show_str:
- mov ax, 0b800h
- mov es, ax
- mov al, 0A0H
- mov ah, 0
- dec dh
- mul dh
- mov bx, ax
- mov al, 2
- mov ah, 0
- mul dl
- sub ax, 2
- add bx, ax
- mov al, cl
- mov ch, 0
- mov ah, 0
- mov di, 0
- mov si, 0
- kiss:
- mov cl, ds:[si]
- jcxz s
- mov es:[bx + di], cl
- mov es:[bx + di + 1], al
- inc si
- add di, 2
- jmp short kiss
- s:
- ret
- code ends
- end start
复制代码 |
|