8086汇编常见问题及解决方案
来源:互联网 发布:切换输入法快捷键mac 编辑:程序博客网 时间:2024/05/29 10:31
(乱序)
附: 8086汇编,俄罗斯方块完整代码:
https://github.com/Dulun/Assembly
1.低级错误
忘记设置data段
mov ax,datamov ds, ax
2.键盘输入&扫描码
equ:宏替换,
$left equ 75$right equ 77$quit equ 113
int 16h 中断:从键盘缓冲区读取数据
入口参数:AH=00H——读键盘
出口参数:ZF=1——无字符输入,否则,AH=键盘的扫描码,AL=ASCII码。
mov ax, 0hint 16hcmp al,'a' ;ascii码...cmp ah, 75 ;扫描码(上下左右esc)
3.文件读写
data... path1 db 'c:/score.txt' buffer1 db 0 buffer2 db 49...
data endsread_score proc near mov ax, data mov ds, ax ;打开文件TEST.TXT mov ah,3DH lea dx,path1 mov al,2 int 21H jc gones ;读取文件内容,存入buffer1 lea dx,buffer1 mov bx,ax mov cx,1 mov ah,3FH int 21H ; ;显示buffer1中的内容 ; mov cx,ax ; lea si,buffer1 ; NEXT: ; mov dl,[si] ; mov ah,2 ; int 21H ; INC si ; LOOP NEXT xor ax,ax mov al,buffer1[0]gones: ret ;关闭文件 mov ah,3EH int 21H retread_score endp;-----------------------------------------------------------------------------------------write_score proc near mov ax, data mov ds, ax xor ax, ax xor bx,bx mov al,buffer1[0] mov score[0],0 cmp al,score[0] jbe oover xor ax, ax ;打开文件TEST.TXT mov ah,3DH lea dx,path1 mov al,2 int 21H jc oover ; mov dx,200H ; mov bx,0 ; mov ds,bx mov dx,offset score mov bx,ax mov cx,1 mov ah,40H int 21H mov ax, data mov ds, ax mov ah,3EH int 21Hoover: retwrite_score endp
4.两重循环,死循环,假sleep
for(int i = 0; i < 100; i++) for(int j = 0; j < 2; j++)
—->
mov cx 100loop_out: push cx mov cx, 2 loop_in: mov ax, 0 ;~.~ loop loop_in; pop cx loop loop_out
sleep:
mov cx,0fh ; speed !!!!!!l: push cx mov cx,0ffffhlo: mov ax,0 loop lo pop cx loop l
5.je, jne, jz太远
je 先跳A,再在A中jmp B 或 call B
6.屏幕&输出
坐标:默认,左上角0B800F, 80列 * 25行
在左上角打印:
mov ax, 0b800hmov es, axxor ax,axmov ax,data ;设置数据段mov ds,axxor bx, bxxor si, simov ah,'@'mov byte ptr es:[bx + si],ah
Hello World!
DATA SEGMENTstr db 'Hello World$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV BX,DATA MOV DS,BX LEA DX,str MOV AH,9 INT 21H MOV AH,4CH INT 21HCODE ENDSEND START
7.结束退出:
mov ax, 4c00hint 21h
8.颜色:
设置时候,直接用二进制设置,
“荧光绿”:
mov al, 'A'mov ah, 00001010bmov es:[si], AL ;低位字符mov es:[si+1], AH;高位颜色
9.随机数:
in al,40h ;开始随机选择方块类型,al=时间随机值and al,0111b ;通过与运算,控制范围;al为随机数,范围:0~7
10.时间:
时分秒,分别显示
show_time proc near mov al,4 out 70h,al in al,71h mov ah,al mov cl,4 shr ah,cl and al,00001111b add ah,30h add al,30h mov bx,0b800h mov es,bx mov byte ptr es:[160*12 + 55*2 ],ah mov byte ptr es:[160*12 + 55*2 + 2],al;-------- xor ax,ax mov ah,':' mov al,02h mov byte ptr es:[160*12 + 57*2],ah mov byte ptr es:[160*12 + 57*2 + 1],al xor ax,ax mov al,2 out 70h,al in al,71h mov ah,al mov cl,4 shr ah,cl and al,00001111b add ah,30h add al,30h mov bx,0b800h mov es,bx mov byte ptr es:[160*12 + 59*2 ],ah mov byte ptr es:[160*12 + 59*2 + 2],al;-------- xor ax,ax mov ah,':' mov al,02h mov byte ptr es:[160*12 + 61*2],ah mov byte ptr es:[160*12 + 61*2 + 1],al xor ax,ax mov al,0 out 70h,al in al,71h mov ah,al mov cl,4 shr ah,cl and al,00001111b add ah,30h add al,30h mov bx,0b800h mov es,bx mov byte ptr es:[160*12 + 63*2 ],ah mov byte ptr es:[160*12 + 63*2 + 2],al retshow_time endp
附: 8086汇编,俄罗斯方块完整代码:
https://github.com/Dulun/Assembly
0 0
- 8086汇编常见问题及解决方案
- IIS常见问题及解决方案
- 内存常见问题及解决方案
- Ubuntu 常见问题及解决方案
- 电脑常见问题及解决方案
- Oracle常见问题及解决方案
- Hadoop常见问题及解决方案
- Android常见问题及解决方案
- MFC常见问题及解决方案
- Hadoop常见问题及解决方案
- SVN常见问题及解决方案
- Ubuntu常见问题及解决方案
- WebView常见问题及解决方案
- Ubuntu常见问题及解决方案
- 随机数常见问题及解决方案
- Ionic 常见问题及解决方案
- Ionic 常见问题及解决方案
- Ionic 常见问题及解决方案
- display:inline、display:block、display:inline-block三者真实用途及含义是什么?
- “fatal: 'git status --porcelain' failed in submodule
- 算法-查找算法
- 9.Linux驱动开发前奏(2)-硬件访问技术
- Web服务器、容器、Servlet分别干什么?
- 8086汇编常见问题及解决方案
- C++ 实现tring字符串trim函数和split函数
- 一次奇妙的大项目维护经历(1)
- 大奖赛现场统分
- React 开发中的几个注意点
- J2EE的组成。
- 欢迎使用CSDN-markdown编辑器
- 10.字符设备驱动模型(2)-字符设备驱动模型
- opencv最小包络三角形