include irvine32.inc
.data
val1 qword 0a2b2a40674981234h
val2 qword 0b010870000234502h
sum dword 3 dup (0)
.code
main proc
mov edi,offset val1
mov esi,offset val2
mov ebx,offset sum
mov ecx,2
call extended_sub
;display the sum
mov eax,sum+8
call writehex
mov eax,sum+4
call w...


[2010-10-27 16:20] 7.53 2个任意整数相减
阅读全文 |
评论次数(0) |
浏览次数(451) |
所属类型(Intel汇编语言程序设计)
[2010-10-27 15:55] 7.52 2个任意整数相加
include irvine32.inc
.data
val1 qword 0a2b2a40674981234h
val2 qword 08010870000234502h
sum dword 3 dup (0)
.code
main proc
mov edi,offset val1
mov esi,offset val2
mov ebx,offset sum
mov ecx,2
call extended_add
;display the sum
mov eax,sum+8
call writehex
mov eax,sum+4
call w...
.data
val1 qword 0a2b2a40674981234h
val2 qword 08010870000234502h
sum dword 3 dup (0)
.code
main proc
mov edi,offset val1
mov esi,offset val2
mov ebx,offset sum
mov ecx,2
call extended_add
;display the sum
mov eax,sum+8
call writehex
mov eax,sum+4
call w...
阅读全文 |
评论次数(0) |
浏览次数(480) |
所属类型(Intel汇编语言程序设计)
[2010-10-05 03:18] test和cmp一个很菜很基础的话题!(转载)
*************************
test属于逻辑运算指令
功能: 执行BIT与BIT之间的逻辑运算
测试(两操作数作与运算,仅修改标志位,不回送结果).
Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。EST AX,BX 与 AND AX,BX 命令有相同效果
语法: TEST r/m,r/m/data
影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0)
运用举例:
1.Test用来测试一个位,例如寄存器:
test eax, 100b; b后缀...
test属于逻辑运算指令
功能: 执行BIT与BIT之间的逻辑运算
测试(两操作数作与运算,仅修改标志位,不回送结果).
Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。EST AX,BX 与 AND AX,BX 命令有相同效果
语法: TEST r/m,r/m/data
影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0)
运用举例:
1.Test用来测试一个位,例如寄存器:
test eax, 100b; b后缀...
阅读全文 |
评论次数(0) |
浏览次数(401) |
所属类型(X86汇编语言)
[2010-10-04 22:44] 寄存器深入体验之FLAG寄存器
FLAG寄存器是什么,有什么作用?
FLAG为标志寄存器,是一个16位的,用来放条件码的寄存器。条件码标志是用来记录程序运行结果的状态,就例如你在算加法题,突然遇到了有个位要进位,你就要先记住要进的那个位,然后下一位相加的时候,就把刚才进位数也一齐加上去,这时候你计着那个进位的数的那部分脑袋就充当了FLAG了,当然,实际上还要复杂一点。极为有用,请务必熟读。
FLAG寄存器详解:
条件码标志是根据有关指令的运行结果,由CPU自动设定的。由于这些状态信息会作为之后的转移指令的条件,所以称做条件码。例如下面一个例子:
cmp EAX,EBX //对比这两个寄存器里面的...
FLAG为标志寄存器,是一个16位的,用来放条件码的寄存器。条件码标志是用来记录程序运行结果的状态,就例如你在算加法题,突然遇到了有个位要进位,你就要先记住要进的那个位,然后下一位相加的时候,就把刚才进位数也一齐加上去,这时候你计着那个进位的数的那部分脑袋就充当了FLAG了,当然,实际上还要复杂一点。极为有用,请务必熟读。
FLAG寄存器详解:
条件码标志是根据有关指令的运行结果,由CPU自动设定的。由于这些状态信息会作为之后的转移指令的条件,所以称做条件码。例如下面一个例子:
cmp EAX,EBX //对比这两个寄存器里面的...
阅读全文 |
评论次数(0) |
浏览次数(431) |
所属类型(X86汇编语言)
[2010-10-01 16:58] 贪吃蛇
assume cs:code
code segment
data segment
db ' = up = down = right = left = quit J = cheat - = speed down + = speed up LEVEL 1'
data ends
data1 segment
db 128 dup (0)
data1 ends
stack segment
db 128 dup (0)
stack ends
start:
mov ax,0b800h
mov e...
code segment
data segment
db ' = up = down = right = left = quit J = cheat - = speed down + = speed up LEVEL 1'
data ends
data1 segment
db 128 dup (0)
data1 ends
stack segment
db 128 dup (0)
stack ends
start:
mov ax,0b800h
mov e...
阅读全文 |
评论次数(0) |
浏览次数(540) |
所属类型(默认类型)
[2010-09-29 15:53] 检测按键的扫描码
;;;;注意NumLock灯的状态
;;;;不同情况下,有些按键的断码是不同的
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
mov ax,0
mov es,ax
push cs
pop ds
mov di,204h
mov si,offset int9
mov cx,offset int9end-offset int9
cld
rep movsb
push es:[4*9] ...
;;;;不同情况下,有些按键的断码是不同的
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
mov ax,0
mov es,ax
push cs
pop ds
mov di,204h
mov si,offset int9
mov cx,offset int9end-offset int9
cld
rep movsb
push es:[4*9] ...
阅读全文 |
评论次数(0) |
浏览次数(498) |
所属类型(默认类型)
[2010-09-29 03:11] 实验16
assume cs:code
code segment
start:
mov ax,2000h ;2000:0这个地方要比0:200空间大N倍,谁用谁知道
mov es,ax
mov di,0
mov ax,cs
mov ds,ax
mov si,offset ssc
mov cx,offset sse-offset ssc
cld
rep movsb
mov ax,0
mov es,ax
cli
mov word ptr es:[4*7],0
mov word ptr es:[4*7+2],2000h
sti
mov ax,4c00h
...
code segment
start:
mov ax,2000h ;2000:0这个地方要比0:200空间大N倍,谁用谁知道
mov es,ax
mov di,0
mov ax,cs
mov ds,ax
mov si,offset ssc
mov cx,offset sse-offset ssc
cld
rep movsb
mov ax,0
mov es,ax
cli
mov word ptr es:[4*7],0
mov word ptr es:[4*7+2],2000h
sti
mov ax,4c00h
...
阅读全文 |
评论次数(0) |
浏览次数(394) |
所属类型(汇编作业)
[2010-09-28 16:12] 实验15
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
mov ax,0
mov es,ax
push es:[4*9]
pop es:[0200h]
push es:[4*9+2]
pop es:[0202h]
cli
mov word ptr es:[4*9],0204h
mov word ptr es:[4*9+2],0
sti
push cs
pop ds ...
stack segment
db 128 dup (0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
mov ax,0
mov es,ax
push es:[4*9]
pop es:[0200h]
push es:[4*9+2]
pop es:[0202h]
cli
mov word ptr es:[4*9],0204h
mov word ptr es:[4*9+2],0
sti
push cs
pop ds ...
阅读全文 |
评论次数(0) |
浏览次数(351) |
所属类型(汇编作业)
[2010-09-28 16:11] 实验14
assume cs:code
code segment
start:
mov bx,0b800h
mov es,bx
mov al,12 ;设置纵坐标
mov ah,160
mul ah
mov bx,ax
mov si,60 ;设置横坐标/2,才是结果
mov al,'/'
mov ah,1 ;设置‘/’颜色
mov es:[bx+si+4],ax
mov es:[bx+si+10],ax
mov al,':'
mov a...
code segment
start:
mov bx,0b800h
mov es,bx
mov al,12 ;设置纵坐标
mov ah,160
mul ah
mov bx,ax
mov si,60 ;设置横坐标/2,才是结果
mov al,'/'
mov ah,1 ;设置‘/’颜色
mov es:[bx+si+4],ax
mov es:[bx+si+10],ax
mov al,':'
mov a...
阅读全文 |
评论次数(0) |
浏览次数(525) |
所属类型(汇编作业)
[2010-09-25 18:31] 实验13
assume cs:code
code segment
start:
mov bx,0b800h
mov es,bx
mov al,12 ;设置纵坐标
mov ah,160
mul ah
mov bx,ax
mov si,60 ;设置横坐标/2,才是结果
mov al,'/'
mov ah,1 ;设置‘/’颜色
mov es:[bx+si+4],ax
mov es:[bx+si+10],ax
mov al,':'
mov a...
code segment
start:
mov bx,0b800h
mov es,bx
mov al,12 ;设置纵坐标
mov ah,160
mul ah
mov bx,ax
mov si,60 ;设置横坐标/2,才是结果
mov al,'/'
mov ah,1 ;设置‘/’颜色
mov es:[bx+si+4],ax
mov es:[bx+si+10],ax
mov al,':'
mov a...
阅读全文 |
评论次数(0) |
浏览次数(323) |
所属类型(汇编作业)
『 查看更多文章 』